DECLARE
TYPE char_rec IS TABLE OF VARCHAR2(5) INDEX BY PLS_INTEGER;
TYPE pls_rec IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
siteno_rec char_rec;
pct_rec pls_rec;
BEGIN
FOR i IN 1 .. 20 LOOP
siteno_rec(i) := to_char(i + 01000);
pct_rec(i):=i * 0.001;
dbms_output.put_line(pct_rec(i));
dbms_output.put_line(siteno_rec(i));
END LOOP;
FORALL i IN 1 .. 20
UPDATE site SET commission_pct = pct_rec(i) WHERE site_no = '0'||siteno_rec(i);
END;
/
注解:
1、forall是一次搞定,不需要写LOOP ...END LOOP;
2、因为forall是一次搞定,所以当用到i时,必须把所有的i的规律变化值存储到一个数组,然后一定搞定,如上'
save excepts : sql%bulk_exceptions.count 错误的条数.无save exceptions 提示时,无错时,count为0,有错时永远是1;
sql%bulk_exceptions.ERROR_INDEX 错误下标;
sql%bulk_exceptions.ERROR_CODE;
本文介绍了一个使用PL/SQL进行批量数据更新的例子。通过定义变量类型和使用FORALL语句来高效地批量更新数据库表中的记录。该示例展示了如何创建并使用数组存储变量值,以及如何在循环中填充这些数组。

被折叠的 条评论
为什么被折叠?



