>>---EXEC SQL--.------------.--SAVEPOINT-name--.------.--> +-AT db_name-+ +UNIQUE+ >--.-----------------------------------------------------------.---END-EXEC--->< +--ON ROLLBACK RETAIN CURSORS--.----------------------------+ +--ON ROLLBACK RETAIN LOCKS--+ >>---EXEC SQL--.------------.--SAVE-.-TRANSACTION--.--name-- END-EXEC--->< +-AT db_name-+ +-TRAN---------+ >>---EXEC SQL--.------------.--RELEASE-.----.-SAVEPOINT-name---END-EXEC--->< +-AT db_name-+ +-TO-+
AT db_name | DECLARE DATABASE を使用して宣言されたデータベースの名前。この句は必須ではありません。省略すると、DECLARE CURSOR 文に関連付けられている接続に自動的に切り替わります (その接続が現在の接続とは異なる場合。DECLARE CURSOR 文の実行中のみ有効)。 |
SQL Server では fire hose カーソルを使用した保存ポイントは許可されないため、 保存ポイントを含む SQL Server アプリケーションをコンパイルする場合には、RO_CURSOR=FF プリミティブ指令を設定して BEHAVIOR 指令を指定する必要があります。
EXEC SQL SAVEPOINT SP1 END-EXEC EXEC SQL SAVEPOINT PHASE2 ON ROLLBACK RETAIN CURSORS END-EXEC
説明:
1 つのトランザクションで複数の保存ポイントを定義できます。
一意の名前を使用して保存ポイントを設定し、さらに別の保存ポイントを同じ一意の名前で保存すると、名前を付けたその保存ポイントは現在のトランザクション状態にリセットされます。
保存ポイントにロールバックした後のカーソルとロックの動作は、データベース特有の動作になります。詳細は、データベースのベンダーから提供されるドキュメントを参照してください。