【问题标题】:Which are all the statements will lead to commit in a PL/SQL procedure?在 PL/SQL 过程中,哪些语句会导致提交?
【发布时间】:2012-06-09 07:31:37
【问题描述】:

我在 Oracle 11g 中编写了一个 PL/SQL 过程。我没有truncatecreatecommit 语句,但会话仍在提交中。我正在使用 SQL Developer 和 PL/SQL Developer。

谁能告诉我哪些语句会导致过程或函数内的提交?

【问题讨论】:

  • 也许您调用该过程的会话设置为自动提交?
  • @tbone 感谢您的回复...我找到了原因,即在执行一些 dml 操作后正在使用收集统计信息。所以它被提交了。
  • @a_horse_with_no_name 谢谢回复

标签: oracle plsql commit oracle11gr2


【解决方案1】:

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

所有 DDL 语句执行提交 (ALTER/CREATE...),即使语句失败。如果您正在运行运行 DDL 的动态语句 (EXECUTE IMMEDIATE),这也会提交您的事务。

一些DBMS packages 也有提交的过程,例如DBMS_STATS。把它们都列出来会很麻烦。当您使用 DBMS 包时,请阅读相应的文档。

【讨论】:

  • 在这里为我节省了很多时间.. 显然改变序列也算作 DDL:/
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多