ページの先頭行へ戻る
Symfoware Server V10.0.0 アプリケーション開発ガイド(ODBCドライバ編)

4.4.4 プロシジャルーチン利用時のトランザクション

ここでは、プロシジャルーチン利用時のトランザクションについて説明します。トランザクション制御の詳細については、“2.2 トランザクションと排他制御”を参照してください。

プロシジャルーチンは、呼出し元のアプリケーションと同一トランザクションとして動作します。アプリケーションから呼び出されたプロシジャルーチン内でトランザクション管理文(COMMIT文またはROLLBACK文)が実行された場合、プロシジャルーチンが実行されているトランザクションを終了します。その後、プロシジャルーチン内でトランザクションを開始するSQL文が実行された場合、プロシジャルーチン内で新しいトランザクションが開始されます。(トランザクションモードは前トランザクションと同一です。)開始されたトランザクションは、呼出し元のアプリケーションにも継続されます。

プロシジャルーチン内のSQL文の実行でエラーが起きた場合は、エラーを起こしたSQL文が無効となります。ただし、SQLSTATE値の例外コードが40の場合は、トランザクションをロールバックします。

プロシジャルーチンがSQLSTATE値の例外コードが40以外の状態で終了する場合、プロシジャルーチン内で行われたすべてのデータベース更新は無効となります。

プロシジャルーチン内でのSQL文の実行時には、ODOSデータソースに指定したCLI_TRAN_SPECの指定は無効ですが、アプリケーションに復帰した後は、CLI_TRAN_SPECの指定に従って制御されます。