背景
PLは手続き型言語(Procedural Language, PL)であり、SQLの拡張機能です。通常のSQL文にプログラミング言語の特性を加え、データ操作やクエリ文をPLコードの手続き的なコードの中に組織し、論理判断やループなどの操作を通じて複雑な機能を実現します。
PLを使用することで高度な機能を備えたプログラムを作成でき、業務ロジックをデータベース内部にカプセル化して、より高い抽象性と安全性を提供すると同時に、ネットワークのやり取りを削減し、呼び出し速度を向上させることで、全体のパフォーマンスを高めることができます。
PLプログラムの開発作業は、データベースサービス開発者にとって重要な日常業務です。SQL文をサポートするモジュールと同様に、PLのデバッグモジュールも非常に重要な機能です。そのため、プログラミングの過程で、開発者にはPL開発エリアとデバッグ機能が必要です。
PL文は、関数、ストアドプロシージャ、パッケージ、トリガーなどのデータベースオブジェクトの作成に使用できます。
ODC V2.2.0以降のバージョンでは、PLオブジェクトと匿名ブロックの作成、コンパイル、実行、デバッグなどの機能をサポートしています。ユーザーは匿名ブロックウィンドウの編集エリアでPL文をコンパイルでき、作成したPLオブジェクトに対して編集やデバッグなどの操作を行うことができます。より良い体験を得るために、ODCの最新バージョンの使用を推奨します。
前提条件
ODCのPLサポート状況
機能 |
サポート対象 |
サポートデータソース |
サポートバージョン |
|---|---|---|---|
| コンパイル | 関数/ストアドプロシージャ/パッケージ | OceanBase Oracle、OB Cloud Oracle | V2.2.7x、V3.0.0以降のバージョン。 |
| デバッグ | 関数/ストアドプロシージャ/匿名ブロック | OceanBase Oracle | V3.2.3以降のバージョン。 |
| 実行 | 関数/ストアドプロシージャ | OceanBase Oracle、OB Cloud Oracle、OceanBase MySQL、OB Cloud MySQL | V2.0.x以降のバージョン。 |
| 関数/ストアドプロシージャ | MySQL | V5.7 | |
| 実行 | パッケージ/匿名ブロック | OceanBase Oracle、OB Cloud Oracle | V2.0.x以降のバージョン。 |
また、以下の点に注意してください:
データソースがOceanBaseであり、かつOBProxy経由でのみ接続可能な場合、そのインスタンスはデバッグをサポートしません。
匿名ブロックウィンドウは、OceanBase Oracle/OB Cloud Oracleデータソースでのみ提供されます。
ODC V3.2.3以前のバージョンでは、armアーキテクチャでのデバッグをサポートしていません。
このドキュメントでは、OceanBase Oracleタイプのストアドプロシージャを作成する例として、データベースGshHにストアドプロシージャPROC_VARCHAR2を作成します。
説明
本文中で使用されているデータはすべて例です。実際の状況に応じてデータを置き換えてください。
PLコンパイル
SQLウィンドウでストアドプロシージャを作成します。

CREATE OR REPLACE PROCEDURE PROC_VARCHAR2(p1 in VARCHAR2, p2 out VARCHAR2, p3 in out VARCHAR2) as v1 varchar2(64) := 'hello,oceanbase'; begin dbms_output.put_line(p1); dbms_output.put_line(p3); p2 := 'hello,odc'; end;SQL開発ウィンドウの左側のナビゲーションバー > ストアドプロシージャーリストで、コンパイル ストアドプロシージャーPROC_VARCHAR2を選択します。

PLステートメントをコンパイルし、コンパイル結果を確認します。

PLデバッグ
SQL開発ウィンドウの左側のナビゲーションバー > ストアドプロシージャーリストで、ストアドプロシージャーPROC_VARCHAR2を選択してデバッグモードに入ります。

パラメータ値を設定した後、OK をクリックします。
注意
OceanBase V4.0.0以降では、デバッグ前にデバッグ権限を取得する必要があります。例:
GRANT DEBUG CONNECT SESSION TO GSH; GRANT DEBUG ANY PROCEDURE TO GSH;
デバッグページに移動し、一括実行をクリックしてPLステートメントを実行します。