サブルーチンとは、特定の問題を解決したり、関連する一連のタスクを実行したりするために、多くのSQL文やPL文を含むPLユニットです。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
サブルーチンにはパラメータを含めることができ、その具体的な値は呼び出し元から渡されます。サブルーチンはストアドプロシージャまたは関数になり得ます。典型的な使い方としては、ストアドプロシージャを使用して操作を行い、関数を使用して計算を行い、値を返すことが挙げられます。
ストアドサブルーチンとは、データベース内部に格納されるサブルーチンであり、さまざまなデータベースアプリケーションで複雑な論理演算を実現するために使用されます。ストアドサブルーチンには以下の3種類があります:
独立したサブルーチン、つまりスキーマ内に作成されるサブルーチンです。
パッケージ内部のサブルーチン、つまりパッケージ本体内部に作成されるサブルーチンです。
ネストされたサブルーチン、つまりPLブロック内に作成されるサブルーチンです。
独立したサブルーチンはプログラムロジックのテストに便利ですが、大量のサブルーチンは管理が難しい場合があります。そのため、プログラムロジックが確定した後、独立したサブルーチンを業務モジュールごとに異なるパッケージに配置することを推奨します。
サブルーチンは、プログラムパッケージやトリガーなど、他の保守性機能の重要な構成要素でもあります。
サブルーチンの構造
サブルーチンはサブルーチンのタイトルで始まり、そのタイトルには名前とパラメータリスト(オプション)が指定されます。
サブルーチンの構造はPLブロックの構造と一致しており、以下を含みます:
宣言部(オプション)
宣言部には、型、定数、変数、例外、明示カーソル、ネストされたサブルーチンの宣言が含まれます。これらの項目はサブルーチンにとってローカルであり、サブルーチンの実行が終了するとすべて存在しなくなります。
実行部(必須)
実行部には代入文、制御実行文、データ操作文が含まれます。
例外処理部(オプション)
例外処理部には、例外(ランタイムエラー)を処理するコードが含まれます。
サブルーチンにコメントを追加することで、プログラムの可読性が向上します。コメントはサブルーチンの任意の位置に記述でき、コンパイラはコメントを無視します。1行コメントは二重のハイフン(--)で始まり、コメント範囲は行末までです。複数行コメントはスラッシュとアスタリスク(/)で始まり、アスタリスクとスラッシュ(/)で終わります。
ストアドプロシージャの構造は以下のとおりです:
PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
statement; [ statement; ]...
[ EXCEPTION ]
exception_handler; [ exception_handler; ]... ]
END;
関数の構造は以下のとおりで、ストアドプロシージャと比較して少なくとも1つのRETURN句が追加されています:
FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
[ declarative_part ]
BEGIN
-- 少なくとも1つのRETURN文がある
statement; [ statement; ]...
[ EXCEPTION ]
exception_handler; [ exception_handler; ]... ]
END;
ストアドプロシージャと関数では、IS | ASの間のコードがサブルーチンの宣言であり、宣言部、実行部、例外処理部がサブルーチンの内容体です。