関連する宣言および文をグループ化するブロックは、PL/SQLソース・プログラムの基本単位です。 ブロックには、オプションの宣言部、必須の実行部、オプションの例外処理部が含まれます。 宣言はブロックの中で局所的に有効で、そのブロックの実行が完了すると消滅します。
ブロックは、スキーマ・レベルで(トップレベル・ブロックとして)使用するか、または別のブロック内で(ネストしたブロックとして)使用するができます。 ブロックには、実行可能文を含めることができる場所であれば、他のブロックを含めることができます。
構文
plsql_block ::=
(body ::=)
declare_section ::=
item_list_1 ::=
(type_definition ::=、item_declaration ::=、function_declaration ::=、procedure_declaration ::=、pragma ::=)
item_list_2 ::=
(function_declaration ::=、function_definition ::=、procedure_declaration ::=、procedure_definition ::=、pragma ::=)
type_definition ::=
(record_type_definition ::=、ref_cursor_type_definition ::=、collection_type_definition ::=)
subtype_definition ::=
item_declaration ::=
collection_variable_dec ::=、constant_declaration ::=、cursor_declaration ::=、cursor_variable_declaration ::=、exception_declaration ::=、record_type_declaration ::=、variable_declaration ::=
pragma ::=
(autonomous_transaction_pragma ::=、exception_init_pragma ::=、inline_pragma ::=、restrict_references_pragma ::=、serially_resuable_pragma ::=)
body ::=
statement ::=
(plsql_block ::=、sql_statement ::=)
sql_statement ::=
キーワードとパラメータの説明
base_type
任意のスカラーまたはCHAR
、DATE
、RECORD
などのユーザー定義のPL/SQLデータ型指定子。
PL/SQLブロックの実行部の開始を示すキーワードです。実行部には実行可能文が置かれます。 PL/SQLブロックには1つ以上の実行可能文(NULL
文でも可)が含まれている必要があります。
collection_variable_dec
コレクションを宣言します(索引付き表、ネストした表またはVARRAY)。 collection_declaration
の構文は、「コレクション」を参照してください。
constant_declaration
定数を宣言します。 constant_declaration
の構文は、「定数」を参照してください。
constraint
CHAR
やNUMBER
などの制約できるデータ型にのみ適用されます。 文字データ型の場合は、最大サイズのバイト数を指定します。 数値データ型の場合は、精度と位取りの最大値を指定します。
cursor_declaration
明示カーソルを宣言します。 cursor_declaration
の構文は、「明示カーソル」を参照してください。
cursor_variable_declaration
カーソル変数を宣言します。 cursor_variable_declaration
の構文は、「カーソル変数宣言」を参照してください。
PL/SQLブロックの宣言部の開始を示すキーワードです。宣言部にはローカル宣言が置かれます。 ローカルに宣言された項目は現行のブロックとそのすべてのサブブロックにのみ存在し、外側のブロックからは見えません。 PL/SQLブロックの宣言部はオプションです。 宣言部は、ブロックの実行部の開始を示すキーワードBEGIN
によって暗黙的に終了します。 詳細は、「宣言」を参照してください。
PL/SQLでは前方参照ができません。 他の文で項目を参照するときは、事前に宣言しておく必要があります。 ただし、サブプログラムは、その他すべてのプログラム項目の後の宣言部の末尾で宣言してください。
PL/SQLブロックの終わりを示すキーワードです。 これはブロック中の最後のキーワードにする必要があります。 END
はトランザクションの終わりを通知しないことに注意してください。 ブロックが複数のトランザクションにまたがることができるように、トランザクションも複数のブロックにまたがることができます。 詳細は、「PL/SQLブロック」を参照してください。
PL/SQLブロックの例外処理部の開始を示すキーワードです。 例外が呼び出されると、ブロックの通常の実行が停止され、制御が適切な例外ハンドラに移ります。 例外ハンドラが終了すると、ブロック直後の文から実行が再開されます。 詳細は、「PL/SQLブロック」を参照してください。
呼び出された例外の例外ハンドラが現行のブロックに存在しないと、制御は外側のブロックに渡されます。 この過程が、例外ハンドラが見つかるまで、または外側にブロックがなくなるまで繰り返されます。 PL/SQLが、例外を処理するための例外ハンドラを見つけられない場合、実行は停止され、「未処理例外」エラーがホスト環境に戻されます。 例外の詳細は、第11章「PL/SQLエラーの処理」を参照してください。
exception_declaration
例外を宣言します。 exception_declaration
の構文は、「例外ハンドラ」を参照してください。
exception_handler
例外ハンドラです。例外が呼び出されると、その例外に関連付けられた一連の文を実行します。 exception_handler
の構文は、「例外ハンドラ」を参照してください。
function_declaration
ファンクションを宣言します。 「ファンクション宣言と定義」を参照してください。
PL/SQLブロックまたは文に任意のラベルを付ける未宣言の識別子です。 使用する場合は、label_name
を二重の山カッコで囲み、ラベルを付けるブロックまたは文の先頭に置く必要があります。 必要に応じて、ブロックのラベル付けに使用する場合は、label_name
を山カッコで囲まずにブロックの末尾に置くこともできます。 1つのブロックまたは文に複数のラベルを使用できますが、ラベルは、各ブロックまたは文に対して一意である必要があります。
外側のブロックで宣言されたグローバル識別子を、サブブロックで再宣言できます。この場合、ローカルでの宣言が優先され、ブロック・ラベルを使用して参照を修飾しなければ、サブブロックではグローバル識別子を参照できなくなります。 詳細は、例2-28「複数の重複したラベルを使用するブロック」を参照してください。
name
ラベル名です(デリミタ<<および>>なし)。
object_declaration
オブジェクト型のインスタンスを宣言します。 オブジェクト型を作成するには、CREATE TYPE文を使用します。
object_ref_declaration
procedure_declaration
プロシージャを宣言します。 「プロシージャ宣言と定義」を参照してください。
record_declaration
ユーザー定義のレコードを宣言します。 record_declaration
の構文は、「レコード定義」を参照してください。
statement
実行可能文です(宣言文ではない)。 一連の文の中には、RAISE
などのプロシージャ文、UPDATE
などのSQL文およびPL/SQLブロックを含めることができます。 PL/SQL文は自由形式です。 つまり、PL/SQL文は、キーワード、デリミタ、リテラルが複数の行にまたがらないかぎり、何行でも続けることができます。 文の終わりは、セミコロン(;)です。
subtype_name
任意のスカラーまたはCHAR
、DATE
、RECORD
などのユーザー定義のPL/SQLデータ型指定子を使用して定義したユーザー定義のサブタイプ。
variable_declaration
変数を宣言します。 variable_declaration
の構文は、「定数」を参照してください。
PL/SQLは、データ操作、カーソル制御およびトランザクション制御文を含むSQL文のサブセットをサポートしています。ただし、ALTER
、CREATE
、GRANT
、REVOKE
などのデータ定義およびデータ制御文はサポートしていません。
関連トピック