我正在做一个声明,要求我执行一个包,执行sql然后提交。
sql的执行决定了它是否成功,我正在检查sql代码的受影响行的编号。如果它只是1,那么commit(一个单独的命令)永远不会运行。
其他两个命令会发生什么,正如我所说,我执行一个命令,我执行一个包,sql本身在两个命令中?
答案 0 :(得分:3)
如果没有COMMIT
或ROLLBACK
语句,那么当会话结束时,工作将被回滚。
更新 APC是对的,该文档比我更具体:
当发生以下任何情况时,交易结束:
用户在没有SAVEPOINT的情况下发出COMMIT或ROLLBACK语句 子句。
用户运行DDL语句,例如CREATE,DROP,RENAME或ALTER。如果 当前事务包含任何DML语句,Oracle数据库 首先提交事务,然后运行并提交DDL 声明作为新的单一陈述交易。
用户断开与Oracle数据库的连接。目前的交易是 提交。
用户进程异常终止。目前的交易是 回滚。
注意:应用程序应始终在程序终止前显式提交或撤消事务。
所以,我没有回答你的问题。这取决于你的连接器在disconection时做了什么。