プライマリ・コンテンツに移動
Oracle® Database Oracleプリコンパイラのためのプログラマーズ・ガイド
12c リリース1 (12.1)
B71398-03
目次へ移動
目次
索引へ移動
索引

前
次

COMMIT (実行可能埋込みSQL)

COMMITの用途

データベースへの変更をすべて確定し、オプションですべてのリソースを解放して、Oracleデータベースとの接続を切断し、現行のトランザクションを終了します。

COMMITの前提条件

現行のトランザクションをコミットするために必要な権限はありません。

自分でコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE TRANSACTIONシステム権限が必要です。他のユーザーがコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE ANY TRANSACTIONシステム権限が必要です。

DBMS MACモードでOracleを使用しているとき、インダウト・トランザクションをコミットできるのは、DBMSラベルがトランザクションのラベル、およびこのトランザクションをコミットしたユーザーの作成ラベルと一致するか、次の条件のいずれかを満たしている場合のみです。

  • トランザクションのラベルまたはユーザーの作成ラベルが、BMSラベルより上位である場合は、READUPおよびWRITEUPシステム権限が必要です。

  • トランザクションのラベルまたはユーザーの作成ラベルがDBMSラベルより下位の場合は、WRITEDOWNシステム権限が必要です。

  • トランザクションのラベルまたはユーザーの作成ラベルがDBMSラベルと同等でない場合は、READUPWRITEUPおよびWRITEDOWNシステム権限が必要です。

COMMITの構文

COMMITのキーワードおよびパラメータ

AT

COMMIT文の発行先のデータベースを指定します。次のいずれかを使用してデータベースを指定します。

  • db_nameは、事前にDECLARE DATABASE文で宣言したデータベース識別子。

  • :host_variableは、値が事前に宣言したdb_nameであるホスト変数。

この句を省略した場合、Oracleではデフォルトのデータベースに文が発行されます。

WORK

標準SQLに準拠している場合にのみサポートされます。COMMIT文とCOMMIT WORK文は同等です。

COMMENT

カレント・トランザクションに対応付けるコメントを指定します。text'は、50文字以内の引用符付きリテラルで、トランザクションがインダウトになると、OracleではトランザクションIDとともにデータ・ディクショナリ・ビューDBA_2PC_PENDINGに格納されます。

RELEASE

リソースをすべて解放し、アプリケーションのOracleデータベースとの接続を切断します。

FORCE

インダウトの分散トランザクションを手動でコミットします。トランザクションは、ローカルまたはグローバル・トランザクションIDを格納する'text'によって識別されます。このトランザクションのIDを確認する場合は、データ・ディクショナリ・ビューDBA_2PC_PENDINGを問い合せます。また、オプションのintegerを使用してトランザクションにシステム変更番号(SCN)を明示的に割り当てることができます。整数を省略すると、トランザクションは現行のSCNを使用してコミットされます。

COMMITの使用上の注意

プログラムの最後のトランザクションは、COMMITまたはROLLBACKコマンドとRELEASEオプションを使用して、必ず明示的にコミットまたはロールバックしてください。プログラムが異常終了すると、Oracleによって変更は自動的にロールバックされます。

COMMITコマンドは、ホスト変数またはプログラムの制御の流れには影響を与えません。このコマンドの詳細は、トランザクションの定義および制御を参照してください。

この例では、埋込みSQL COMMITコマンドの使用方法を示しています。

EXEC SQL AT sales_db COMMIT RELEASE;

COMMITの関連トピック

ROLLBACK(実行可能埋込みSQL)およびSAVEPOINT(実行可能埋込みSQL)