| 構文 | 説明 |
| COMMIT | トランザクション中のDML文で行ったすべての変更を 確定しトランザクションを終了する。 |
| ROLLBACK | トランザクション中のDML文で行ったすべての変更を 取消トランザクションを終了する。 |
| SAVEPOINT セーブポイント名 | トランザクション内にセーブポイントを作成する |
| ROLLBACK TO SAVEPOINT セーブポイント名 | トランザクション内のセーブポイントまでロールバックする。 |
DECLARE BEGIN insert into tbl_hoge values (1); --コミット commit; EXCEPTION; WHERE OTHERS THEN --エラーの場合ロールバック rollback; END;
DECLARE BEGIN insert into tbl_hoge values (1); セーブポイントの設定 savepoint savepointname; insert into tbl_hoge values (2); EXCEPTION; WHERE OTHERS THEN --エラーの場合ロールバック rollback to savepointname; END;
DECLARE
--排他ロック取得
CURSOR C1 IS
SELECT *
FROM tbl_hoge
WHERE hoge_id = 10
FOR UPDATE NOWAIT;
BEGIN
--オープン時にロック取得
OPEN C1;
省略・・・・・
--排他ロック開放
CLOSE C1;
EXCEPTION
WHEN OTHERS THEN
RollBack;
IF SQLCODE() = -54 THEN
DBMS_OUTPUT.PUT_LINE('排他エラー');
ELSE
DBMS_OUTPUT.PUT_LINE('その他のエラー');
END IF;
END;