ヘッダーをスキップ
Oracle Real-Time Decisionsプラットフォーム開発者ガイド
リリース3.0
B54059-01
  目次
目次

戻る
戻る
 
 

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

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

例は、CrossSellCustomersテーブルに基づいています。このテーブルの設定の詳細は、『Oracle Real-Time Decisionsインストレーションおよび管理ガイド』の「CrossSellサンプル・データの移入」を参照してください。

この付録の内容は次のとおりです。

B.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 Real-Time Decisionsインストレーションおよび管理ガイド』の「Oracle Real-Time Decisionsのデータ・アクセスの構成」を参照してください。

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

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

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

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

  6. 「Mapping」タブの「Data Source Input Values」領域で、入力列のpIdの入力値をIdに設定します。

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

B.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 Real-Time Decisionsインストレーションおよび管理ガイド』の「Oracle Real-Time Decisionsのデータアクセスの構成」を参照してください。

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

  4. 「Results Set Details」セクションで、結果セットを追加します。

  5. Allow multiple rows」チェック・ボックスを選択します。

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

    • Age [Integer]

    • Occupation [String]

    • LastStatementBalance [Double]

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

    • AGE [Integer]

    • OCCUPATION [String]

    • LASTSTATEMENTBALANCE [Double]

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

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

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

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

  10. 「Mapping」タブの「Data Source Input Values」領域で、入力列のpCreditLineAmountの入力値をCreditLineAmountに設定します。

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

B.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 Real-Time Decisionsインストレーションおよび管理ガイド』の「Oracle Real-Time Decisionsのデータアクセスの構成」を参照してください。

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

  4. 「Results Set Details」セクションで、結果セットを追加します。

  5. Allow multiple rows」チェック・ボックスを選択します。

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

    • Age [Integer]

    • Occupation [String]

    • LastStatementBalance [Double]

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

    • AGE [Integer]

    • OCCUPATION [String]

    • LASTSTATEMENTBALANCE [Double]

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

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

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

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

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

  11. 「Mapping」タブの「Data Source Input Values」領域で、入力列のpCreditLineAmountの入力値をCreditLineAmountに設定します。

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