無名ブロック・ステートメント (PL/SQL)
PL/SQL 無名ブロック・ステートメントとは、PL/SQL 制御ステートメントおよび SQL ステートメントを含めることができる、実行可能ステートメントのことです。 これを使用すると、スクリプト言語にプロシージャー・ロジックをインプリメントできます。 PL/SQL コンテキストにおいて、このステートメントは データ・サーバーでコンパイルおよび実行できます。
無名ブロック・ステートメントは、データベース内に持続せず、オプションの宣言セクション、必須の実行可能セクション、およびオプションの例外セクションという、最大 3 つセクションで構成できます。
オプションの宣言セクションには、実行可能セクション内および例外セクション内でステートメントによって使用される変数、カーソル、およびタイプの宣言を含めることができます。この宣言セクションは実行可能 BEGIN-END ブロックの前に挿入されます。
オプションの例外セクションは、BEGIN-END ブロックの末尾に挿入できます。 例外セクションは、キーワード EXCEPTION で開始し、そのセクションを配置したブロックの末尾まで続く必要があります。
呼び出し方法
このステートメントは、対話式ツールや、CLP などのコマンド行インターフェースから実行可能です。 このステートメントは、PL/SQL プロシージャー定義、関数定義、またはトリガー定義内に組み込むこともできます。 これらのコンテキスト内では、このステートメントは、無名ブロック・ステートメントではなく、ブロック構造と呼ばれます。
許可
無名ブロックの呼び出しに特権は必要ありません。 しかし、ステートメントの許可 ID によって保持される特権には、その無名ブロック内に組み込んだ SQL ステートメントの呼び出しに必要な特権をすべて含める必要があります。
構文
説明
- DECLARE
- DECLARE ステートメントを開始する、オプションのキーワード。これを使用して、データ・タイプ、変数、またはカーソルを宣言できます。 このキーワードを使用するかどうかは、ブロックを配置するコンテキストによって異なります。
- declaration
- データ・タイプ、変数、カーソル、例外、またはプロシージャーの宣言を指定します。 そのスコープはブロック内だけのローカルなものです。 各宣言の末尾は、セミコロンでなければなりません。
- BEGIN
- 実行可能セクションの開始を示す必須のキーワード。このセクションには、SQL または PL/SQL ステートメントを 1 つ以上含めることができます。 BEGIN-END ブロック内に、ネストした BEGIN-END ブロックを含めることができます。
- statement
- PL/SQL または SQL ステートメントを指定します。 各ステートメントの末尾は、セミコロンでなければなりません。
- EXCEPTION
- 例外セクションの開始を示す、オプションのキーワード。
- WHEN exception-condition
- 1 つ以上のタイプの例外に関してテストする条件式を指定します。
- THEN handler-statement
- スローされた例外が exception-condition の例外と一致した場合に実行される、PL/SQL または SQL ステートメントを指定します。 各ステートメントの末尾は、セミコロンでなければなりません。
- END
- ブロックを終了する必須のキーワード。
例
BEGIN
NULL;
END;SET SERVEROUTPUT ON;
BEGIN
dbms_output.put_line( 'Hello' );
END;SET SERVEROUTPUT ON;
DECLARE
current_date DATE := SYSDATE;
BEGIN
dbms_output.put_line( current_date );
END;