2
我在Oracle 11g中编写了一个PL/SQL过程。我没有truncate
,create
或commit
声明,但会话仍在提交。我正在使用SQL Developer和PL/SQL Developer。哪些是所有的语句都会导致在PL/SQL过程中提交?
有人能告诉我哪些语句导致在一个过程或函数内提交吗?
我在Oracle 11g中编写了一个PL/SQL过程。我没有truncate
,create
或commit
声明,但会话仍在提交。我正在使用SQL Developer和PL/SQL Developer。哪些是所有的语句都会导致在PL/SQL过程中提交?
有人能告诉我哪些语句导致在一个过程或函数内提交吗?
所有DML语句(INSERT/DELETE/UPDATE/MERGE)都不在PL/SQL中提交。
即使语句失败,所有DDL语句确实提交(ALTER/CREATE ...)。如果您正在运行一个运行DDL的动态语句(EXECUTE IMMEDIATE),那么它也会提交您的事务。
一些DBMS packages也有承诺的程序,例如DBMS_STATS。将它们全部列出是非常麻烦的。在使用DBMS软件包时请阅读相应的文档。
也许你正在调用该过程的会话设置为自动提交? –
最新的程序代码? – tbone
@tbone感谢您的回应......我找到了原因,即Am在执行一些dml操作后使用了收集统计信息。所以它得到了承诺。 –