ここでは、Oracle ストアドプロシージャ Fetcher を使用してストアドプロシージャを作成および呼び出すステップバイステップガイドです。
新しいストアドプロシージャ SDK プロジェクトを作成します。
データベース型を Oracle JDBC に設定します。
バックエンド資格証明を入力し、[終了] を押します。
注意: バックエンドユーザーは、新しいスキーマオブジェクト、ストアドプロシージャ、パッケージなどの作成に必要なその他の特権に加えて、DBA ロール /「GRANT SELECT ANY DICTIONARY TO ユーザー」が必要です。 |
この使用ケースは、VHARCHAR、INT、BLOB、FLOAT、スキーマオブジェクトなど、JDBC SQL タイプによってサポートされている出力パラメータを返すストアドプロシージャを説明します。このケースでは、ラッパーなしで直接ストアドプロシージャを呼び出しできます。
SDK プロジェクト→ OpenLegacy → Import Oracle ストアドプロシージャのインポートの順に右クリックします。
[メタデータをフェッチ] をクリックします。
[データベーススキーマ] コンボボックスを使用して、要求されたスキーマを選択します。
データベースパッケージを設定し、[ストアドプロシージャ] を選択します。
必要に応じて、[JUnit テストを生成] にチェックを入れ、[OK] を押します。
この使用ケースでは、 Record
など、JDBC SQL タイプによってサポートされていない出力パラメータを返すストアドプロシージャを説明します。
このケースでは、ラッパーが自動的に生成されるため、データベースに追加する必要があります。
エンティティがストアドプロシージャラッパーを呼び出します。
SDK プロジェクト→ OpenLegacy → Import Oracle ストアドプロシージャのインポートの順に右クリックします。
[メタデータをフェッチ] をクリックします。
[データベーススキーマ] コンボボックスを使用して、要求されたスキーマを選択します。
データベースパッケージを設定し、[ストアドプロシージャ] を選択します。
必要に応じて、[JUnit テストを生成] にチェックを入れ、[OK] を押します。
エンティティが SdkProject/src/main/resources/wrappers
フォルダにあるラッパー SQL スクリプトと一緒に生成されます。
ラッパーコードをターゲットパッケージにコピーし、(データベースに)コンパイルします。
ラッパーコード例
/*Compile types*/ CREATE TYPE DEMO.REC_EMPLOYEE_OBJ AS OBJECT ( EMPLOYEE_ID NUMBER, FIRST_NAME VARCHAR2(20), SALARY NUMBER, CONSTRUCTOR FUNCTION REC_EMPLOYEE_OBJ RETURN SELF AS RESULT ); / /*Compile types*/ /*Add procedure signature to package and compile*/ PROCEDURE GET_EMPLOYEE_BY_ID_WR(EMP_ID IN NUMBER, STATUS_CODE OUT VARCHAR2, EMPLOYEE OUT DEMO.REC_EMPLOYEE_OBJ); /*Add procedure signature to package and compile*/ /*Add procedure wrapper & init functions to package body and compile*/ FUNCTION INIT(PARAM IN DEMO.TEST.REC_EMPLOYEE) RETURN DEMO.REC_EMPLOYEE_OBJ IS RES DEMO.REC_EMPLOYEE_OBJ; BEGIN RES := DEMO.REC_EMPLOYEE_OBJ( PARAM.EMPLOYEE_ID, PARAM.FIRST_NAME, PARAM.SALARY ); RETURN RES; END; PROCEDURE GET_EMPLOYEE_BY_ID_WR(EMP_ID IN NUMBER, STATUS_CODE OUT VARCHAR2, EMPLOYEE OUT DEMO.REC_EMPLOYEE_OBJ) IS EMPLOYEE_ORIG DEMO.TEST.REC_EMPLOYEE; BEGIN DEMO.TEST.GET_EMPLOYEE_BY_ID(EMP_ID, STATUS_CODE, EMPLOYEE_ORIG); EMPLOYEE := INIT(EMPLOYEE_ORIG); END; /*Add procedure wrapper & init functions to package body and compile*/ |
ラッパーが実装されたターゲットへの実行アクションを設定します。
以下のようにパスを設定します。 |