oracle pl/sql FORALL 语句

Posted

技术标签:

【中文标题】oracle pl/sql FORALL 语句【英文标题】:oracle pl/sql FORALL statement 【发布时间】:2014-07-27 19:49:24 【问题描述】:

我对这个程序感到困惑,请逐行解释任何一个,并且必须在 forall 循环中我的变量如何在那里迭代

DECLARE
 TYPE mysubs_type IS TABLE OF pls_integer INDEX BY pls_integer;
 TYPE mylist_type IS TABLE OF pls_integer INDEX BY pls_integer;
 mysubs mylist_type;
 mylist mylist_type;
BEGIN
 mylist(2) := 2;
     mysubs(10) := 2; -- point to mylist(2)
 mylist(3) := 3;
     mysubs(200) := 3; -- point to mylist(3)
 mylist(6) := 6;
     mysubs(30) := 6; -- point to mylist(6)
     mysubs(40) := 3; -- point to mylist(3)
 FORALL i IN VALUES OF mysubs
 INSERT INTO mynum_table(my_list) VALUES(mylist(i));
END;

【问题讨论】:

何不直接开始阅读手册:docs.oracle.com/cd/E11882_01/appdev.112/e25519/… 【参考方案1】:

I 遍历bounds_clause : IN VALUES OF 表示imysubs 的元素,并将以非连续的方式迭代集合mysubs。在这里,在这种情况下 4 次。尊重mysubs的索引:

mysubs(10) : 2 mysubs(30) : 6 mysubs(40) : 3 mysubs(200) : 3

FORALL 总是插入块:

2
6
3
3

【讨论】:

以上是关于oracle pl/sql FORALL 语句的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL 如何输出在 FORALL 语句中进行了多少次插入

Oracle pl/sql forall:如何计算表空间已满(1654)错误的实际插入行数

在 PL/SQL 中运行 forall 循环时,是不是需要事后提交?

在 PL/SQL 的 FORALL 循环内插入

oracle-sql书写

PL/SQL批处理语句BULK COLLECT