ここでは、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