13.6 ブロック

関連する宣言および文をグループ化するブロックは、PL/SQLソース・プログラムの基本単位です。

オプションの宣言部、必須の実行部、オプションの例外処理部が含まれます。宣言はブロックに対してローカルで、そのブロックの実行が完了するとなくなります。ブロックはネストできます。

無名ブロックは実行可能文です。

ここでのトピック

構文

subtype_definition ::=

procedure_call ::=

sql_statement ::=

セマンティクス

plsql_block

label

ブロックで一意である未宣言の識別子。

DECLARE

ブロックの宣言部を開始します。

declare_section

ローカル宣言を置きます。ローカル宣言はこのブロックとこのブロックのサブブロックにのみ存在し、外側のブロックからは見えません。

declare_sectionの制限

  • create_packagecreate_package_bodyまたはcompound_trigger_blockdeclare_sectionには、PRAGMA AUTONOMOUS_TRANSACTIONを含めることはできません。

  • trigger_bodyまたはtps_bodydeclare_sectionでは、データ型LONGまたはLONG RAWの変数を宣言できません。

関連項目:

subtype_definition

サブタイプの宣言では静的な式を使用できます。詳細は、静的な式を参照してください。

サブタイプ

定義するユーザー定義のサブタイプの名前。

base_type

定義しているサブタイプのベース型。base_typeは、CHARDATEまたはRECORDなどのスカラーまたはユーザー定義のPL/SQLデータ型指定子です。

CHARACTER SET character_set

文字データ型のサブタイプのキャラクタ・セットを指定します。

CHARACTER SET character_setの制限

base_typeが文字データ型でない場合は、この句は指定しないでください。

NOT NULL

このサブタイプを使用して宣言されるデータ項目にNOT NULL制約を付けます。この制約の詳細は、「NOT NULL制約」を参照してください。

constraint

数値データ型のサブタイプの制約を指定します。

constraintの制限

base_typeが数値データ型でない場合は、constraintは指定しないでください。

precision

数値データ型の制約付きサブタイプの精度を指定します。

precisionの制限

base_typeに精度を指定できない場合は、precisionは指定しないでください。

scale

数値データ型の制約付きサブタイプの位取りを指定します。

scaleの制限

base_typeに位取りを指定できない場合は、scaleは指定しないでください。

RANGE low_value .. high_value

数値データ型の制約付きサブタイプの範囲を指定します。low_valuehigh_valueは数値リテラルである必要があります。

RANGE high_value .. low_valueの制限

この句は、base_typeまたはPLS_INTEGERのサブタイプ(事前定義またはユーザー定義のいずれか)がPLS_INTEGERである場合にのみ指定します。(表3-3に、PLS_INTEGERの事前定義のサブタイプの概要を示しています。範囲を指定できるユーザー定義のサブタイプの詳細は、「制約付きサブタイプ」を参照してください。)

body

BEGIN

ブロックの実行部を開始します。実行部には実行可能文が置かれます。

EXCEPTION

ブロックの例外処理部を開始します。PL/SQLによって例外が呼び出されると、ブロックの通常の実行が停止され、制御が適切なexception_handlerに移ります。例外ハンドラが終了すると、ブロック直後の文から実行が再開されます。例外処理の詳細は、「PL/SQLのエラー処理」を参照してください。

exception_handler

例外ハンドラを参照してください。

END

ブロックを終了します。

name

ENDが適用されるブロックの名前(ラベル、ファンクション名、プロシージャ名またはパッケージ名)。

statement

label

文で一意である未宣言の識別子。

assignment_statement

代入文を参照してください。

basic_loop_statement

「基本LOOP文」を参照してください。

case_statement

CASE文を参照してください。

close_statement

CLOSE文を参照してください。

collection_method_call

次のいずれかのコレクション・メソッドの起動。これらコレクション・メソッドはプロシージャです。

  • DELETE

  • EXTEND

  • TRIM

構文は、「コレクション・メソッドの起動」を参照してください。

continue_statement

CONTINUE文を参照してください。

cursor_for_loop_statement

「カーソルFOR LOOP文」を参照してください。

execute_immediate_statement

「EXECUTE IMMEDIATE文」を参照してください。

exit_statement

EXIT文を参照してください。

fetch_statement

FETCH文を参照してください。

for_loop_statement

「FOR LOOP文」を参照してください。

forall_statement

FORALL文を参照してください。

goto_statement

GOTO文を参照してください。

if_statement

IF文を参照してください。

null_statement

NULL文を参照してください。

open_statement

OPEN文を参照してください。

open_for_statement

「OPEN FOR文」を参照してください。

pipe_row_statement

「PIPE ROW文」を参照してください。

pipe_row_statementの制限

この文を使用できるのは、パイプライン・テーブル・ファンクションの本体内のみです。他の場所で使用すると、例外が発生します。

raise_statement

RAISE文を参照してください。

return_statement

RETURN文を参照してください。

select_into_statement

「SELECT INTO文」を参照してください。

while_loop_statement

「WHILE LOOP文」を参照してください。

procedure_call

procedure

起動するプロシージャの名前。

parameter [, parameter ]...

起動するプロシージャの実パラメータのリスト。各実パラメータのデータ型は、対応する仮パラメータのデータ型と互換性がある必要があります。使用できる実パラメータは仮パラメータのモードで決まります。

仮パラメータのモード 実パラメータ

IN

定数、初期化された変数、リテラルまたは式

OUT

データ型がNOT NULLとして定義されていない変数

IN OUT

変数(通常は、文字列バッファまたは数値アキュムレータ)

プロシージャによってパラメータのデフォルト値が指定される場合は、パラメータ・リストでそのパラメータを省略できます。プロシージャにパラメータがない場合、またはプロシージャによってすべてのパラメータにデフォルト値が指定される場合は、パラメータ・リストを省略するか、または空のパラメータ・リストを指定することができます。

sql_statement

commit_statement

SQL COMMIT文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

delete_statement

SQL DELETE文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。「DELETE文の拡張機能」も参照してください。

insert_statement

SQL INSERT文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。「INSERT文の拡張機能」も参照してください。

lock_table_statement

SQLのLOCK TABLE文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

merge_statement

SQL MERGE文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

rollback_statement

SQL ROLLBACK文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

savepoint_statement

SQL SAVEPOINT文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

set_transaction_statement

SQLのSET TRANSACTION文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

update_statement

SQL UPDATE文。構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。「UPDATE文の拡張機能」も参照してください。

  • 例1-1PL/SQLブロック構造

  • 例2-23複数の重複したラベルを使用するブロック

  • 例4-30不適切なラベル配置