13.6 ブロック
関連する宣言および文をグループ化するブロックは、PL/SQLソース・プログラムの基本単位です。
オプションの宣言部、必須の実行部、オプションの例外処理部が含まれます。宣言はブロックに対してローカルで、そのブロックの実行が完了するとなくなります。ブロックはネストできます。
無名ブロックは実行可能文です。
ここでのトピック
構文
item_list_1 ::=
(cursor_declaration ::=、function_declaration ::=、item_declaration ::=、procedure_declaration ::=、type_definition ::=)
item_list_2 ::=
(cursor_declaration ::=、cursor_definition ::=、function_declaration ::=、function_definition ::=、procedure_declaration ::=、procedure_definition ::=)
type_definition ::=
(collection_type_definition ::=、record_type_definition ::=、ref_cursor_type_definition ::=、subtype_definition ::=)
subtype_definition ::=
constraint ::=
item_declaration ::=
(collection_variable_decl ::=, constant_declaration ::=, cursor_declaration ::=, cursor_variable_declaration ::=, exception_declaration ::=, record_variable_declaration ::=, variable_declaration ::=)
procedure_call ::=
sql_statement ::=
セマンティクス
plsql_block
label
ブロックで一意である未宣言の識別子。
DECLARE
ブロックの宣言部を開始します。
declare_section
ローカル宣言を置きます。ローカル宣言はこのブロックとこのブロックのサブブロックにのみ存在し、外側のブロックからは見えません。
declare_sectionの制限
-
create_package
、create_package_body
またはcompound_trigger_block
のdeclare_section
には、PRAGMA
AUTONOMOUS_TRANSACTION
を含めることはできません。 -
trigger_body
またはtps_body
のdeclare_section
では、データ型LONG
またはLONG
RAW
の変数を宣言できません。
関連項目:
-
create_package
の詳細は、「CREATE PACKAGE文」を参照してください -
create_package_body
の詳細は、「CREATE PACKAGE BODY文」を参照してください -
compound_trigger_block
、trigger_body
、およびtps_body
の詳細は、「CREATE TRIGGER文」を参照してください
subtype_definition
サブタイプの宣言では静的な式を使用できます。詳細は、静的な式を参照してください。
サブタイプ
定義するユーザー定義のサブタイプの名前。
base_type
定義しているサブタイプのベース型。base_type
は、CHAR
、DATE
または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_value
とhigh_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 ]...
起動するプロシージャの実パラメータのリスト。各実パラメータのデータ型は、対応する仮パラメータのデータ型と互換性がある必要があります。使用できる実パラメータは仮パラメータのモードで決まります。
仮パラメータのモード | 実パラメータ |
---|---|
|
定数、初期化された変数、リテラルまたは式 |
|
データ型が |
|
変数(通常は、文字列バッファまたは数値アキュムレータ) |
プロシージャによってパラメータのデフォルト値が指定される場合は、パラメータ・リストでそのパラメータを省略できます。プロシージャにパラメータがない場合、またはプロシージャによってすべてのパラメータにデフォルト値が指定される場合は、パラメータ・リストを省略するか、または空のパラメータ・リストを指定することができます。
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文の拡張機能」も参照してください。