PLプログラムは、宣言部(DECLARE)、実行部(BEGIN)、例外処理部(EXCEPTION)の3つのブロックで構成されています。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
3つの部分の役割は以下のとおりです:
宣言部:PLで使用する変数、型、カーソル、およびローカルのストアドプロシージャや関数を宣言します。
実行部:プロセスとSQL文を明示的に実行し、プログラムの主要な部分です。
例外処理部:エラー処理を明示的に行います。
PLブロックの構文は以下のとおりです:
<< label >> --ラベル (オプション)
DECLARE
/* 宣言部: PLで使用する変数、型、カーソル、およびローカルのストアドプロシージャや関数を宣言します */
BEGIN
/* 実行部: プロセスとSQL文、すなわちプログラムの主要な部分 */
EXCEPTION
/* 例外処理部: エラー処理 */
END;
注意
実行部はPLに必ず含まれる内容です。
PLブロックは以下の3種類に分けられます:
アノニマスブロック:動的に構築され、実行は1回のみ可能です。
プログラム:データベース内に格納されるストアドプロシージャ、関数、パッケージなどです。一度データベースに構築されると、他のプログラムから呼び出すことができます。
トリガー:データベースに操作が加えられたとき、特定のイベントがトリガーされ、それに応じたプログラムが自動的に実行されます。
例:最もシンプルなアノニマスブロックの例です。"Hello World"を画面に出力します。
obclient> DECLARE
V_Str varchar(20) := 'World';
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello '||V_Str);
END;
/
Query OK, 0 rows affected (0.01 sec)
Hello World
PLブロックのデフォルトの区切り文字は「/」です。ユーザーはdelimiterコマンドを使用してカスタム区切り文字を設定することもでき、これにより定義全体を単一のステートメントとしてサーバーに渡すことができます。区切り文字は1文字または複数の文字で構成できますが、バックスラッシュ()は一般的にエスケープ文字として使用されるため、使用は避けてください。例:
DELIMITER $$
DELIMITER //
説明
PLステートメントのデフォルトの終端文字は"/"ですが、ユーザーは終端文字をカスタマイズすることもできます:
- OceanBase Developer Center ODCのGUI環境でデータベース開発を行う場合は、カスタム区切り文字を設定し、PLプログラムを呼び出す前に
DELIMITER ;ステートメントを使用して;に戻す必要があります。 - PLブロック内部の定義に
;で区切られたステートメントが含まれない場合は、区切り文字を使用する必要はありません。