このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

このサンプルは、入力パラメータを取るプロシージャの呼び出しとデータベースの更新の方法について説明しています。プロシージャをこの方法で呼び出すことにより、トランザクションを有効化し、エラーの場合アクションをロールバック、またはプロシージャの呼び出し前にカスタム SQL ステートメントの実行を可能にすることができます。このシナリオは、ストアドプロシージャが MapForce 内のターゲットコンポーネントのように振る舞い、返される出力に興味がない場合を想定しています。パラメーターのパスの方法と、ストアドプロシージャにより返されたデータをマップする方法に関しては、 入力と出力を持つストアドプロシージャを参照してください。

 

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

 

CREATE PROCEDURE Production.uspAddProductModel
  @ModelName nvarchar(50)
  ,@Inst xml
AS
BEGIN
INSERT INTO [Production].[ProductModel]
          ([Name]          
          ,[Instructions]
          ,[rowguid]
          ,[ModifiedDate])
    VALUES
          (@ModelName          
          ,@Inst
          ,NEWID()
          ,GETDATE())
END

 

上のストアドプロシージャ 入力として2つのプロシージャ (@ModelName, @Inst) を取り、データベースにより生成されたデータと共に、 AdventureWorks データベースに ProductModel テーブルに対応する値を挿入します。

 

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

 

1.「AdventureWorks」 データベースを MapForce から接続し、マッピングにストアドプロシージャを追加する方法で説明されるとおり、ストアドプロシージャをマッピングに追加します。データベースユーザーアカウントがストアドプロシージャをビューして実行するパーミッションが存在することを確認してください。

2.ストアドプロシージャの横の 「コンテキストメニューの表示」 mf_ic_storedproc_menu ボタンをクリックし、「ノードをターゲットとして表示」を選択します。 左側に入力パラメーターがリストされているマッピング上でストアドプロシージャがターゲットコンポーネントとして表示されます。

mf_sp_15

3.「コンテキストメニューの表示」 mf_ic_storedproc_menu ボタンをもう一度クリックし、「プロシージャの設定」を選択します。この任意のステップにより、ロールバック可能なトランザクションの内部でストアドプロシージャを実行することができます。プロシージャが呼び出される前に カスタム SQL ステートメントの実行を追加することができます。

4.「トランザクションの使用」 チェックボックスを選択します。

mf_sp_16

メモ:このサンプルでは、データベースのトレースがデータベースコンポーネントのレベルで無効化されており、トレースが実行されません。しかしながら、必要な場合、ストアドプロシージャのためにデータベースのトレースを有効化することができます。 詳細に関しては、データベースのトレースとエラーのログを参照してください。

 

5.データベースに挿入されるデータを提供するソースコンポーネントを追加します。このサンプルでは、ソースデータが定数により提供されますが、MapForce によりサポートされる他のソースコンポーネントは入力としての役割を果たします。 詳細に関しては、 マッピングに定数を追加するを参照してください。

mf_sp_17

このマッピングはデータベースを更新し、他のマッピングのように出力を直接プレビューしません。代わりに、「出力」 ボタンをクリックして、データベースがどのように変更されるかについてのヒントを含む疑似 SQL を表示します。トランザクションを有効化すると、これらはコメントにより示されます。

mf_sp_18

「出力」 ペイン内に表示される疑似 SQL は、実際のトランザクションコマンドを表示せず、(コメントとして) ヒントのみを表示します。実際の SQL コマンドは基になるデータベース API に送信されます。

 

データベースに対してマッピングを実行するには、以下を行います:

 

「出力」 メニューから「SQL スクリプトの実行」をクリックします。

「SQL スクリプトの実行」 mf_ic_run-sql ツールバーボタンをクリックします。

 

ストアドプロシージャと入力の重複

同じストアドプロシージャにマッピング上の複数のソースからのデータをマップする場合、複数の入力を受け入れるようにストアドプロシージャを複製します。これを行うには、コンポーネント上のストアドプロシージャを右クリックし、コンテキストメニューから 「入力の複製を追加する」 を選択します。入力の複製を参照してください。マッピング実行される個所で、このようなストアドプロシージャの複製はそれぞれの複製された入力のために一度呼び出されます。

 

各パラメータは動的な値 (または 「nullable」 )であることができるため、 「入力の複製を追加する」 はストアドプロシージャのパラメーターのために無効化されていることに注意してください。

(C) 2019 Altova GmbH