我试图测试,但没有好的结果;
据我所知,当我使用其他包中的变量并使用回滚时,它对它没有任何影响。 但是当我测试它时,它没有按预期工作
declare
begin
for i in 1 .. 10
loop
begin
otherPackage.temp :=10;
People.Insert_One(i_Id => v_Arr(i));
end;
end loop;
rollback;
dbms_output.put_line(otherPackage.temp);
end;
otherPackage.temp 默认为 -1,当我在此测试窗口中使用并使用回滚时,它显示 10,更改后的值;
您在逻辑中只使用过一次包的变量temp
otherPackage
为其赋值 10。
ROLLBACK
只会消除任何DML
的影响。PL/SQL
变量没有任何ROLLBACK
或COMMIT
的影响。
因此,当您打印它时,您将获得 10 作为temp
的值,与您在同一会话中分配的值相同。
干杯!!