8

PL/SQL プログラミングは初めてです。コード内にいくつかの DML ステートメント (挿入) を含む pl/sql プロシージャを記述しようとしました。pl/sql コードで挿入操作を実行した後、明示的なコミットを行っていません。しかし、トランザクションは pl/sql プロシージャを実行した後にコミットされています。

これはデフォルトの動作ですか?

どうすればこれを制御できますか?

4

2 に答える 2

6

PL/SQL Developer クライアントでは、プリファレンスを介して SQL Window トランザクションの自動コミットを制御します。

ここに画像の説明を入力

于 2013-10-03T17:28:35.637 に答える
6

DML ステートメント (INSERT/DELETE/UPDATE/MERGE) は、PL/SQL で自動コミットを行いません。DDL ステートメントはコミットします (ALTER/CREATE など)。これは、何かが失敗した場合でも発生します。DDL を実行する動的ステートメントのような EXECUTE IMMEDIATE を実行している場合、これもトランザクションをコミットします。そしてそれは2000年以来ずっと[そしてこれからも]続く

SQL*Plus などのクライアント インターフェイスには、オフ/オンにできる自動コミット機能があります。クライアントのドキュメントで確認してください。何かのようなもの

SET AUTOCOMMIT OFF

この変数の現在のステータスを確認できます

SHOW AUTCOMMIT 

そしてそれは on/off かどうかを教えてくれます。

自動コミットのその他のバリエーションについては、これを参照してください

于 2013-08-04T12:04:13.597 に答える