我是PL / SQL编程的新手。我试着在代码中编写带有一些DML语句(插入)的pl / sql过程。在pl / sql代码中执行插入操作后,我没有进行任何显式提交。但是在执行pl / sql过程后,事务将被提交。
这是默认行为吗?
我如何控制这个?
答案 0 :(得分:6)
DML语句(INSERT / DELETE / UPDATE / MERGE)不在PL / SQL中执行自动提交。 DDL语句确实提交(ALTER / CREATE等),即使出现故障也会发生这种情况。如果您正在运行EXECUTE IMMEDIATE,如运行DDL的动态语句,那么这也将提交您的事务。自2000
以来,它就像那样[并将继续]SQL * Plus等客户端界面具有自动提交功能,可以关闭/打开,在客户端文档中查找。像
这样的东西SET AUTOCOMMIT OFF
您可以看到此变量的当前状态
SHOW AUTCOMMIT
这将告诉你它是否开/关。
通过this了解更多自动提交的变体
答案 1 :(得分:4)
在PL / SQL Developer客户端中,您可以通过“首选项”控制SQL窗口事务的自动提交。