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種類に分けられます:
匿名ブロック:動的に構築され、一度しか実行できません。
プログラム:データベースに保存されるストアドプロシージャ、関数、パッケージなどです。データベース上で作成された後、他のプログラムから呼び出すことができます。
トリガー:データベースに操作が加えられると、いくつかのイベントがトリガーされ、それに応じて対応するプログラムが自動的に実行されます。
例:最もシンプルな匿名ブロックで、画面に「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開発者センターODCのWeb環境でデータベース開発を行う場合、カスタム区切り文字を定義し、PLプログラムを呼び出す前に
DELIMITER ;ステートメントを使用して;に戻す必要があります。 - PLブロック内部の定義に
;で区切られたステートメントが含まれない場合、区切り文字を使用する必要はありません。