PL/SQLの無名ブロックについて

PL/SQLのBEGIN ~ END、もしくはDECLARE ~ BEGIN ~ ENDによる「ブロック」の中にコードを直接記述した「無名ブロック」は、Oracle(オラクル)に登録されないで実行出来るプロシジャです。 試験データを作成したい場合などに使用すると便利です。内ブロックで発生した例外やエラーは、内ブロックで例外処理することや外ブロックで例外処理することも出来ます。 SQL*Plusのコマンド・プロンプトに無名ブロックのPL/SQLを入力し最終行にスラッシュ(/)を入力して改行することでPL/SQLの無名ブロックが実行されます。

無名ブロックのサンプルソース

set serveroutput on;
DECLARE
	/* 宣言セクション */
BEGIN
	/* 実行可能セクション */
	DECLARE
		/* 宣言セクション */
	BEGIN
		/* 実行可能セクション */
		dbms_output.put_line('OK1');
	EXCEPTION
		/* 例外セクション */
		WHEN OTHERS THEN
			dbms_output.put_line('ERROR1');
			/* 例外発生 */
			RAISE;
	END;
	dbms_output.put_line('OK2');
	commit;
EXCEPTION
	/* 例外セクション */
	WHEN OTHERS THEN
		dbms_output.put_line('ERROR2');
		rollback;
END;
/
「SERVEROUTPUT ON;」コマンドでPL/SQLのdbms_output.put_lineで設定などした標準出力を表示します。デフォルト値は、OFFです。
~実行結果~
OK1
OK2

PL/SQLプロシージャが正常に完了しました。

inserted by FC2 system