ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Real-Time Decisionsプラットフォーム開発者ガイド
11g リリース1 (11.1.1)
B72429-01
  目次へ移動
目次

前
 
次
 

C ストアド・プロシージャからのデータ・ソースの例

この付録では、Oracle、SQL ServerおよびDB2からデータ・ソースを作成する方法の例だけでなく、これらのデータ・ソースからエンティティとセッションの属性を作成する方法の例も示します。

例は、CrossSellCustomers表に基づいています。この表の設定の詳細は、『Oracle Fusion Middleware Oracle Real-Time Decisions管理者ガイド』のCrossSellサンプル・データの移入に関する項を参照してください。

この付録には次のトピックが含まれます:

C.1 単一結果のストアド・プロシージャからのデータ・ソースの作成

単一結果のストアド・プロシージャからデータ・ソースを作成する手順は次のとおりです。

  1. 適切なコマンドを使用して、Oracle、SQL ServerまたはDB2のデータベースにストアド・プロシージャのGet_Single_CustomerInfoを作成します。

    (A) Oracle

    CREATE PROCEDURE GET_SINGLE_CUSTOMERINFO
    (
       P_ID IN INTEGER,
       P_AGE OUT INTEGER,
       P_OCCUPATION OUT VARCHAR2,
       P_LASTSTATEMENTBALANCE OUT FLOAT
    )
    AS
    BEGIN
       SELECT AGE, OCCUPATION, LASTSTATEMENTBALANCE INTO P_AGE, P_OCCUPATION, 
    P_LASTSTATEMENTBALANCE FROM CROSSSELLCUSTOMERS
    WHERE CROSSSELLCUSTOMERS.ID = P_ID; END;

    (B) SQL Server

    CREATE PROCEDURE Get_Single_CustomerInfo 
       @pId INTEGER,
       @pAge INTEGER OUTPUT,
       @pOccupation VARCHAR(20) OUTPUT,
       @pLastStatementBalance FLOAT OUTPUT
    AS
       SELECT @pAge = Age, 
    @pOccupation = Occupation,
    @pLastStatementBalance = LastStatementBalance FROM CrossSellCustomers
    WHERE Id = @pId; GO

    (C) DB2

    CREATE PROCEDURE DB2ADMIN.GET_SINGLE_CUSTOMERINFO
    (
       IN P_ID INTEGER,
       OUT P_AGE INTEGER,
       OUT P_OCCUPATION VARCHAR(20),
       OUT P_LASTSTATEMENTBALANCE REAL
    )
    LANGUAGE SQL
    P1: BEGIN
       DECLARE CURSOR_ CURSOR WITH RETURN FOR
          SELECT AGE, OCCUPATION, LASTSTATEMENTBALANCE 
          FROM DB2ADMIN.CROSSSELLCUSTOMERS AS CROSSSELLCUSTOMERS
          WHERE CROSSSELLCUSTOMERS.ID = P_ID;
       OPEN CURSOR_;
       FETCH CURSOR_ INTO P_AGE, P_OCCUPATION, P_LASTSTATEMENTBALANCE;
       CLOSE CURSOR_;
    END P1
    
  2. 使用しているアプリケーション・サーバーにストアド・プロシージャのJDBCデータ・ソースを作成します。

    アプリケーション・サーバーにデータ・ソースを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Real-Time Decisions管理者ガイド』のOracle Real-Time Decisionsのデータ・アクセスの構成に関する項を参照してください。

  3. デシジョン・スタジオで、データベースからGet_Single_CustomerInfoストアド・プロシージャをインポートすることで、ストアド・プロシージャのデータ・ソースであるDS_Single_Customerを作成します。

    SQL Server用ストアド・プロシージャの場合は、パラメータのpAgepOccupationおよびpLastStatementBalanceの方向をInput/OutputからOutputに変更します。

  4. デシジョン・スタジオで、データ・ソースのDS_Single_Customerをインポートすることで、エンティティのEnt_Single_Customerを作成します。

  5. Integer型のId属性を追加します。

  6. 「マッピング」タブの「データ・ソース入力値」領域で、入力列の「pId」の入力値をIdに設定します。

  7. 「セッション」エンティティを開き、新しい属性のcust_spを追加し、データ型をEnt_Single_Customerに設定します。

C.2 結果セットが1つのストアド・プロシージャからのデータ・ソースの作成

結果セットが1つのストアド・プロシージャからデータ・ソースを作成する手順は次のとおりです。

  1. 適切なコマンドを使用して、Oracle、SQL ServerまたはDB2のデータベースにストアド・プロシージャのGet_OneSet_CustomerInfoを作成します。

    (A) Oracle

    CREATE PROCEDURE GET_ONESET_CUSTOMERINFO
    (
       P_CREDITLINEAMOUNT IN INTEGER,
       CURSOR_ IN OUT TYPES.REF_CURSOR
    )
    AS
    BEGIN
       OPEN CURSOR_ FOR
          SELECT * FROM CROSSSELLCUSTOMERS 
    WHERE CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT; END;

    (B) SQL Server

    CREATE PROCEDURE Get_OneSet_CustomerInfo 
       @pCreditLineAmount INTEGER
    AS
       SET NOCOUNT ON;
       SELECT * FROM CrossSellCustomers 
       WHERE CreditLineAmount >= @pCreditLineAmount;
    GO
    

    (C) DB2

    CREATE PROCEDURE DB2ADMIN.GET_ONESET_CUSTOMERINFO
    (
       IN P_CREDITLINEAMOUNT INTEGER
    )
    DYNAMIC RESULT SETS 1
    LANGUAGE SQL
    P1: BEGIN
       DECLARE CURSOR_ CURSOR WITH RETURN FOR
          SELECT * FROM DB2ADMIN.CROSSSELLCUSTOMERS AS CROSSSELLCUSTOMERS
          WHERE CROSSSELLCUSTOMERS.CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT;
       OPEN CURSOR_;
    END P1
    
  2. 使用しているアプリケーション・サーバーにストアド・プロシージャのJDBCデータ・ソースを作成します。

    アプリケーション・サーバーにデータ・ソースを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Real-Time Decisions管理者ガイド』のOracle Real-Time Decisionsのデータ・アクセスの構成に関する項を参照してください。

  3. デシジョン・スタジオで、データベースからGet_OneSet_CustomerInfoストアド・プロシージャをインポートすることで、ストアド・プロシージャのデータ・ソースであるDS_OneSet_Customerを作成します。

  4. 「結果セットの詳細」セクションで、結果セットを追加します。

  5. 「複数の行を許可」チェック・ボックスを選択します。

  6. SQL Server用ストアド・プロシージャの場合は、所定のデータ型で示されているとおりに次の列名を追加します。

    • Age [Integer]

    • Occupation [String]

    • LastStatementBalance [Double]

    Oracle用ストアド・プロシージャとDB2用ストアド・プロシージャの場合は、所定のデータ型で示されているとおりに次の列名を追加します。

    • AGE [Integer]

    • OCCUPATION [String]

    • LASTSTATEMENTBALANCE [Double]

  7. デシジョン・スタジオで、データ・ソースのDS_OneSet_Customerをインポートすることで、エンティティのEnt_OneSet_Customerを作成します。

  8. Integerデータ型のCreditLineAmount属性を追加し、そのデフォルト値を50000に設定します。

    これにより、結果は約30行に制限されます。

  9. 属性のAgeOccupationおよびLastStatementBalanceの「配列」列を選択します。

  10. 「マッピング」タブの「データ・ソース入力値」領域で、入力列の「pCreditLineAmount」の入力値をCreditLineAmountに設定します。

  11. 「セッション」エンティティを開き、新しい属性のcust_oneset_spを追加し、データ型をEnt_OneSet_Customerに設定します。

C.3 結果セットが2つのストアド・プロシージャからのデータ・ソースの作成

結果セットが2つのストアド・プロシージャからデータ・ソースを作成する手順は次のとおりです。

  1. 適切なコマンドを使用して、Oracle、SQL ServerまたはDB2のデータベースにストアド・プロシージャのGet_TwoSets_CustomerInfoを作成します。

    (A) Oracle

    CREATE PROCEDURE GET_TWOSETS_CUSTOMERINFO
    (
       P_CREDITLINEAMOUNT IN INTEGER,
       CURSOR1_ IN OUT TYPES.REF_CURSOR,
       CURSOR2_ IN OUT TYPES.REF_CURSOR 
    )
    AS
    BEGIN
       OPEN CURSOR1_ FOR
          SELECT * FROM CROSSSELLCUSTOMERS 
          WHERE CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT;
        
      OPEN CURSOR2_ FOR
          SELECT * FROM CROSSSELLCUSTOMERS 
           WHERE CARDTYPE = 'Platinum' AND CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT;    
    END;
    

    (B) SQL Server

    CREATE PROCEDURE Get_TwoSets_CustomerInfo 
       @pCreditLineAmount INTEGER
    AS
       SET NOCOUNT ON;
       SELECT * FROM CrossSellCustomers 
       WHERE CreditLineAmount >= @pCreditLineAmount;
       SELECT * FROM CrossSellCustomers 
       WHERE CreditLineAmount >= @pCreditLineAmount AND CardType = 'Platinum';
    GO
    

    (C) DB2

    CREATE PROCEDURE DB2ADMIN.GET_TWOSETS_CUSTOMERINFO
    (
       IN P_CREDITLINEAMOUNT INTEGER
    )
    DYNAMIC RESULT SETS 2
    LANGUAGE SQL
    P1: BEGIN
       DECLARE CURSOR1_ CURSOR WITH RETURN FOR
          SELECT * FROM DB2ADMIN.CROSSSELLCUSTOMERS AS CROSSSELLCUSTOMERS
          WHERE CROSSSELLCUSTOMERS.CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT;
     
      DECLARE CURSOR2_ CURSOR WITH RETURN FOR
         SELECT * FROM DB2ADMIN.CROSSSELLCUSTOMERS AS CROSSSELLCUSTOMERS
          WHERE CROSSSELLCUSTOMERS.CREDITLINEAMOUNT >= P_CREDITLINEAMOUNT 
          AND CROSSSELLCUSTOMERS.CARDTYPE = 'Platinum';
     
       OPEN CURSOR1_;
       OPEN CURSOR2_;
    END P1
    
  2. 使用しているアプリケーション・サーバーにストアド・プロシージャのJDBCデータ・ソースを作成します。

    アプリケーション・サーバーにデータ・ソースを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Real-Time Decisions管理者ガイド』のOracle Real-Time Decisionsのデータ・アクセスの構成に関する項を参照してください。

  3. デシジョン・スタジオで、データベースからGet_TwoSets_CustomerInfoストアド・プロシージャをインポートすることで、ストアド・プロシージャのデータ・ソースのDS_TwoSets_Customerを作成します。

  4. 「結果セットの詳細」セクションで、結果セットを追加します。

  5. 「複数の行を許可」チェック・ボックスを選択します。

  6. SQL Server用ストアド・プロシージャの場合は、所定のデータ型で示されているとおりに次の列名を追加します。

    • Age [Integer]

    • Occupation [String]

    • LastStatementBalance [Double]

    Oracle用ストアド・プロシージャとDB2用ストアド・プロシージャの場合は、所定のデータ型で示されているとおりに次の列名を追加します。

    • AGE [Integer]

    • OCCUPATION [String]

    • LASTSTATEMENTBALANCE [Double]

  7. 2番目の結果セットに対して手順4から6を繰り返します。

  8. デシジョン・スタジオで、データ・ソースのDS_TwoSets_Customerをインポートすることで、エンティティのEnt_TwoSets_Customerを作成します。

  9. Integerデータ型のCreditLineAmount属性を追加し、そのデフォルト値を50000に設定します。

    これにより、結果は約30行に制限されます。

  10. 属性のAgeOccupationおよびLastStatementBalanceの「配列」列を選択します。

  11. 「マッピング」タブの「データ・ソース入力値」領域で、入力列の「pCreditLineAmount」の入力値をCreditLineAmountに設定します。

  12. 「セッション」エンティティを開き、新しい属性のcust_twosets_spを追加し、データ型をEnt_TwoSets_Customerに設定します。