入力と出力を持つストアドプロシージャ

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce とデータベース > ストアドプロシージャ
 >

入力と出力を持つストアドプロシージャ

このサンプルは、入力パラメータを取り、データベースから出力を取得するプロシージャを呼び出す方法を示しています。このシナリオでは、ストアドプロシージャは Web サービス、または、関数と同様に呼び出されています。MapForce によりサポートされる他のターゲットコンポーネントにより抽出されたデータをマップすることができます。

 

「AdventureWorks」 データベース内にデモのストアドプロシージャを最初に作成しましょう。これを行うには、下のスクリプトをデータベースに対して実行します。Microsoft SQL Server Management Studio のクエリウィンドウ、または、 DatabaseSpy (https://www.altova.com/ja/databasespy) などのツールからこれを行うことができます。どちらの場合でも、データベースユーザーアカウントがストアドプロシージャを作成するパーミッションを有していることを確認してください。

 

CREATE PROCEDURE Production.uspSearchProducts
  @SearchString nvarchar(50)
  ,@MaxPrice money
  ,@ComparePrice money OUTPUT
AS
BEGIN
  SET NOCOUNT ON      
  SELECT pr.[Name], pr.ListPrice FROM [Production].[Product] pr
  WHERE pr.[Name] like @SearchString AND  pr.ListPrice < @MaxPrice
 
  SET @ComparePrice = @MaxPrice
  RETURN @ComparePrice
END

 

上のストアドプロシージャは製品の情報を含むレコードセットを抽出します。 入力として2つのパラメーターを取ります: 製品名 (@SearchString) を持つ文字列、および、製品の価格 (@MaxPrice) の最高額。レコードセットとデフォルトの戻りパラメータに加え、 出力パラメーター (@ComparePrice) も抽出します。

 

次のステップは、このプロシージャにより返されたデータを使用するマッピングの作成方法を表示します。

 

1.「AdventureWorks」 データベースを MapForce から接続し、マッピングにストアドプロシージャを追加する方法で説明されているとおり、ストアドプロシージャをマッピングに追加します。データベースユーザーアカウントがストアドプロシージャをビューして実行するパーミッションが存在することを確認してください。
2.ストアドプロシージャの横の 「コンテキストメニューの表示」 mf_ic_storedproc_menu ボタンをクリックし、「パラメーター付きの呼び出しの挿入」を選択します。ストアドプロシージャが左側に入力パラメーターを表示し、右側は戻り値と出力パラメーターを含むマッピングの個別のコンポーネント内に表示されます。

mf_sp_10

3.「コンテキストメニューの表示」 mf_ic_storedproc_menu ボタンをもう一度クリックし、 「レコードセット構造の編集」を選択します。これは、プロシージャにより返されたレコードセットの構造に関する MapForce 情報を提供するために必要です。 「レコードセットの構造」 ダイアログボックスが表示されます。

mf_sp_11

デザイン時にストアドプロシージャを呼び出すと(プロシージャの実装により)副作用が発生する可能性があります。デザイン時にストアドプロシージャを実行する場合、下記で説明されているとおり、「実行」をクリックしないでください。代わりに、レコードセットを手動で関連する列に追加し、「レコードセット構造」 ダイアログボックス内で期待されるレコードセットを定義します。「レコードセット構造」 ダイアログボックス内の「レコードセットの追加」 または 「列の追加」 ボタンを使用します。

 

4.「入力パラメータと呼び出しプロシージャの定義」をクリックします。 「ストアドプロシージャの評価」 ダイアログボックスが表示されます。

mf_sp_12

5.上記の通りパラメータの値を入力し、 「実行」をクリックします。
6.「OK」 をクリックします。レコードセット構造 ("RS1") が 「レコードセットの構造」 ダイアログボックスとマッピング上に表示されます。
7.この時点では、抽出されたデータが書き込まれるターゲットコンポーネントを追加することができます。 このサンプルでは、 データは CSV ファイルに書き込まれます。 「挿入」 メニューから「テキストファイル」をクリックし、データは CSV コンポーネントをマッピングに追加します。 CSV とテキストファイルを参照してください。 次に、下に示されるようにマッピング接続を描きます。プロシージャの入力パラメータが定数により提供されていることに注意してください。詳細に関しては、 マッピングに定数を追加するを参照してください。

mf_sp_13

マッピングをプレビューすることができます。 「出力」 ボタンをクリックして、「出力」 ペイン内でマッピングの結果を確認します。例:

mf_sp_14


(C) 2019 Altova GmbH