0

パッケージを実行し、SQLを実行してからコミットする必要があるステートメントを実行しています。

SQLの実行は、それが成功したかどうかを決定するものであり、SQLコードの影響を受ける行の数をチェックしています。1 以外の場合、コミット (別のコマンド) は実行されません。

他の 2 つのコマンドはどうなるでしょうか。パッケージを実行するコマンドを実行すると言いましたが、2 つのコマンドで SQL 自体を実行します。

4

1 に答える 1

3

COMMITorステートメントがないROLLBACK場合、セッションの終了時に作業がロールバックされます。

詳細な説明はTransation Management Docにあります

UPDATE APCは正しいです。ドキュメントは私よりも具体的です:

次のいずれかが発生すると、トランザクションは終了します。

ユーザーが、SAVEPOINT 句を指定せずに COMMIT または ROLLBACK ステートメントを発行します。

ユーザーは、CREATE、DROP、RENAME、または ALTER などの DDL ステートメントを実行します。現在のトランザクションにDML文が含まれている場合、Oracle Databaseは最初にトランザクションをコミットし、次にDDL文を実行して新しい単一文のトランザクションとしてコミットします。

ユーザーがOracle Databaseから切断します。現在のトランザクションがコミットされます。

ユーザープロセスが異常終了します。現在のトランザクションはロールバックされます。

注:アプリケーションは、プログラムを終了する前に、トランザクションを明示的にコミットまたは元に戻す必要があります。

だから、私はあなたの質問に本当に答えませんでした。それは、コネクタが切断されたときに何をするかによって異なります。

于 2013-02-25T08:44:28.953 に答える