我在Oracle 11g中编写了一个PL / SQL过程。我没有truncate
,create
或commit
语句,但会话仍在提交。我正在使用SQL Developer和PL / SQL Developer。
有人可以告诉我哪些语句会导致过程或函数内的提交吗?
答案 0 :(得分:5)
所有DML语句(INSERT / DELETE / UPDATE / MERGE)都不在PL / SQL中提交。
所有DDL语句确实提交(ALTER / CREATE ...),即使语句失败也是如此。如果您正在运行运行DDL的动态语句(EXECUTE IMMEDIATE),那么这也将提交您的事务。
某些DBMS packages也有提交的过程,例如DBMS_STATS。列出所有内容将非常麻烦。在使用DBMS包时,请阅读相应的文档。