我试图在一些变量计算后使用带有FORALL子句的INSERT语句。
更确切地说:
declare
type t_test_bis is table of test_1%rowtype;
v_test_bis t_test_bis;
cursor c_1 is
select * from test_1;
i number;
begin
OPEN c_1;
LOOP
FETCH c_1 BULK COLLECT INTO v_test_bis;
EXIT WHEN c_1%NOTFOUND;
END LOOP;
CLOSE c_1;
forall j in 1 .. v_test_bis.count
v_test_bis(i).age := v_test_bis(i).age + 10; -- is there a way to perform such opperation?
insert into test_2 values v_test_bis(i);
end;
谢谢,
答案 0 :(得分:2)
forall
将一个集合绑定到一个SQL语句并一次性执行它。它不是一个循环,并且没有任何设施可以注入任何每行处理步骤。
相反,您可以编写单独的步骤来循环遍历集合并修改forall
之前的每个值。
答案 1 :(得分:1)
不,因为FORALL语句可能只包含一个DML语句,而你有两个(如果这就是你要求的话)。