2012-06-05 23 views
2

我在Oracle 11g中编写了一个PL/SQL过程。我没有truncatecreatecommit声明,但会话仍在提交。我正在使用SQL Developer和PL/SQL Developer。哪些是所有的语句都会导致在PL/SQL过程中提交?

有人能告诉我哪些语句导致在一个过程或函数内提交吗?

+3

也许你正在调用该过程的会话设置为自动提交? –

+0

最新的程序代码? – tbone

+0

@tbone感谢您的回应......我找到了原因,即Am在执行一些dml操作后使用了收集统计信息。所以它得到了承诺。 –

回答

4

所有DML语句(INSERT/DELETE/UPDATE/MERGE)都不在PL/SQL中提交。

即使语句失败,所有DDL语句确实提交(ALTER/CREATE ...)。如果您正在运行一个运行DDL的动态语句(EXECUTE IMMEDIATE),那么它也会提交您的事务。

一些DBMS packages也有承诺的程序,例如DBMS_STATS。将它们全部列出是非常麻烦的。在使用DBMS软件包时请阅读相应的文档。

相关问题