oracle - 为什么绑定数组为空时 FORALL 不抛出值错误?
问题描述
我有一个示例代码FORALL
CREATE TABLE dummy (n NUMBER);
DECLARE
TYPE numbers_t IS TABLE OF NUMBER;
num numbers_t := numbers_t ();
BEGIN
FORALL indx IN NULL .. 10
INSERT INTO dummy (n)
VALUES (num (indx));
DBMS_OUTPUT.put_line ('No error');
EXCEPTION
WHEN VALUE_ERROR
THEN
DBMS_OUTPUT.put_line ('Error');
END;
输出
No error
为什么当绑定数组的上限或下限为空时,FORALL 不会像 for 循环语句那样抛出值错误?
解决方案
没有理由简单地抛出错误,因为如果绑定数组没有上限和下限,则不会使用 FORALL 批量执行 DML 操作。我不知道甲骨文背后的真正意图。
对于为什么 FOR LOOP 抛出 Value 错误异常而 FORALL 没有看到任何正确的解释,我还没有看到。您可以查看 FORALL 的示例以了解其工作原理。 https://livesql.oracle.com/apex/livesql/file/content_CAV7T5WWK3ATEVKRBAPNOZ430.html https://oracle-base.com/articles/9i/bulk-binds-and-record-processing-9i
推荐阅读
- javascript - 正则表达式来选择特定的词
- visual-studio-2019 - 更改 Visual Studio 2019 的搜索引擎
- c++ - C ++,如果某些条目重复,则输出所有可能的排列(递归算法)
- windows - Powershell检查用户是否是本地用户并且具有本地Windows机器上的用户名和密码的管理员权限(非活动目录)
- java - SystemProperties 类方法的替代方法及其在 java 或 kotlin 中的用法是什么?
- reactjs - 列内的反应路由器链接不会“填充”整个列
- sql-server - 如何通过 EF 检索自定义/用户定义列的值?
- javascript - 使用 flex-box 时如何保持图标居中?我有一个案例,我在一个页面中有 2 个图标,在另一个页面中有 3 个图标用于反应项目
- sql-server - 我的 Visual Studio 无法连接到 SQL Cluster Server
- c# - 如何从
并使用 Xamarin 从一页到另一页显示此文本?