ROLLBACK 语句对主机变量的值或控制流没有影响?



我试图测试,但没有好的结果;

据我所知,当我使用其他包中的变量并使用回滚时,它对它没有任何影响。 但是当我测试它时,它没有按预期工作

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,更改后的值;

您在逻辑中只使用过一次包的变量tempotherPackage为其赋值 10。

ROLLBACK只会消除任何DML的影响。PL/SQL变量没有任何ROLLBACKCOMMIT的影响。

因此,当您打印它时,您将获得 10 作为temp的值,与您在同一会话中分配的值相同。

干杯!!

最新更新