Oracle ストアドプロシージャ Fetcher の使用方法

Oracle ストアドプロシージャ Fetcher の使用方法

ここでは、Oracle ストアドプロシージャ Fetcher を使用してストアドプロシージャを作成および呼び出すステップバイステップガイドです。

手順

SDK プロジェクトの構成:
  1. 新しいストアドプロシージャ SDK プロジェクトを作成します。

  2. データベース型を Oracle JDBC に設定します。



  1. バックエンド資格証明を入力し、[終了] を押します。

注意: バックエンドユーザーは、新しいスキーマオブジェクト、ストアドプロシージャ、パッケージなどの作成に必要なその他の特権に加えて、DBA ロール /「GRANT SELECT ANY DICTIONARY TO ユーザー」が必要です。

ストアドプロシージャ Fetcher を使用したストアドプロシージャエンティティの作成 - 簡単な使用ケース

この使用ケースは、VHARCHAR、INT、BLOB、FLOAT、スキーマオブジェクトなど、JDBC SQL タイプによってサポートされている出力パラメータを返すストアドプロシージャを説明します。このケースでは、ラッパーなしで直接ストアドプロシージャを呼び出しできます。

 

  1. SDK プロジェクト→ OpenLegacy → Import Oracle ストアドプロシージャのインポートの順に右クリックします。

 

  1. [メタデータをフェッチ] をクリックします。

 

  1. [データベーススキーマ] コンボボックスを使用して、要求されたスキーマを選択します。

 

  1. データベースパッケージを設定し、[ストアドプロシージャ] を選択します。

 

  1. 必要に応じて、[JUnit テストを生成] にチェックを入れ、[OK] を押します。

 

 

ストアドプロシージャ Fetcher を使用したストアドプロシージャエンティティの作成 - 複雑な使用ケース

この使用ケースでは、 Record など、JDBC SQL タイプによってサポートされていない出力パラメータを返すストアドプロシージャを説明します。
このケースでは、ラッパーが自動的に生成されるため、データベースに追加する必要があります。
エンティティがストアドプロシージャラッパーを呼び出します。

 

  1. SDK プロジェクト→ OpenLegacy → Import Oracle ストアドプロシージャのインポートの順に右クリックします。

  2. [メタデータをフェッチ] をクリックします。

  3. [データベーススキーマ] コンボボックスを使用して、要求されたスキーマを選択します。

  4. データベースパッケージを設定し、[ストアドプロシージャ] を選択します。

 

  1. 必要に応じて、[JUnit テストを生成] にチェックを入れ、[OK] を押します。
    エンティティが SdkProject/src/main/resources/wrappers フォルダにあるラッパー SQL スクリプトと一緒に生成されます。

  2. ラッパーコードをターゲットパッケージにコピーし、(データベースに)コンパイルします。

ラッパーコード例

/*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*/    

 

  1. ラッパーが実装されたターゲットへの実行アクションを設定します。



 

以下のようにパスを設定します。SCHEMA_NAME.PACKAGE_NAME.STORED_PROCEDURE_NAME

 

Related content