SQL Server のストアドプロシージャを呼び出す

プロシージャが使用できる場合は常に、Microsoft SQL Server のストアドプロシージャを Direct Transfer アクティビティのターゲットとして、または LC LSX スクリプト内で使用できます。ストアドプロシージャを呼び出すときは、パラメータを正しく設定しなければなりません。

入力値は、名前付きのパラメータとして SQL プロシージャに渡されます。SQL のパラメータには、入力値として渡されたフィールドと同じ名前が使用されます。キーによるオペレーション (選択、更新、削除) のときはキー値を入力パラメータとして指定し、必要な場合 (挿入または削除) はデータの値を指定します。入力値のデータ型は、LEI (IBM® Lotus Enterprise Integrator®) または DECS (Domino® 基幹連携サービス) でのデータ型に最も近いものが選ばれ、SQL により、プロシージャパラメータで定義されているデータ型に変換されます (Microsoft SQL で変換がサポートされている場合)。

ストアドプロシージャからの出力は、プロシージャの最後の SELECT ステートメントで返されなけれなりません。この選択による結果セットが、ストアドプロシージャによって生成される結果セットになります。

次に示すのは、Microsoft SQL Server のストアドプロシージャのサンプルです。Advanced RealTime Virtual Fields Notes® アクティビティで、キーフィールドが NUMBER1、データフィールドが NUMBER2、TEXT1、TEXT2 のときにオープンイベントを使用するには、ストアドプロシージャがこのフォーマットに従っている必要があります。このサンプルでは、キーフィールドを入力パラメータとして渡し、結果セットにはキーフィールドに続けてデータフィールドを含めるようになっています。

create procedure OpenProc @NUMBER1 int 
as select NUMBER2, TEXT1, TEXT2, NUMBER1 from tablename 
where NUMBER1 = @NUMBER1
注: ストアドプロシージャを使用するとき、アクティビティでのフィールドマッピングの順序は、ストアドプロシージャのパラメータの順序と一致していなければなりません。

例えば、次のストアドプロシージャでは、emp_back という名前のテーブルに新しいデータが挿入されます。

CREATE PROCEDURE DECS_CREATE @FIRSTNAME varchar(100), @LASTNAME char(100), @DEPTNO int, @HIREDATE datetime, @BIRTHDATE smalldatetime, @GRADE real, @EMPNO int as insert into EMP_BACK (EMPNO, FIRSTNAME, LASTNAME, DEPTNO, HIREDATE, BIRTHDATE, GRADE) values (@EMPNO, @FIRSTNAME, @LASTNAME, @DEPTNO, @HIREDATE, @BIRTHDATE, @GRADE)

アクティビティ文書でフィールドをマップするときは、ストアドプロシージャ内の、新しいデータが保存される場所を指定する部分とマッピングの順序が一致していなければなりません。

ストアドプロシージャのサンプル

次に示すのは、結果セットに関わりのないストアドプロシージャのセットです。ストアドプロシージャのセットの後に、Advanced RealTime Virtual Fields アクティビティ文書でのストアドプロシージャ名の入力方法の例を示しています。

CREATE procedure QECreateaddrbook(
@CompanyName varchar(20),
@MailDomain varchar(20), 
@MailServer varchar(20),
@MailAddress varchar(20),
@MiddleInitial varchar(1),
@State varchar(20),
@FirstName varchar(20),
@LastName varchar(20))
as
INSERT INTO Venturi.addrbook (FirstName,MiddleInitial,LastName, MailDomain, MailServer, MailAddress, CompanyName,State)
VALUES
(@FirstName, @MiddleInitial, @LastName, @MailDomain, @MailServer, @MailAddress, @CompanyName, @State)

create procedure QEDeleteaddrbook (@FirstName varchar (20), @LastName varchar (20)) as DELETE FROM addrbook WHERE FirstName=@FirstName and LastName = @LastName

CREATE procedure dbo.QESelectaddrbook(@FirstName varchar(20),@LastName varchar(20)) as
select FirstName, MiddleInitial, LastName, MailDomain, MailServer, MailAddress, CompanyName, State from Venturi.addrbook 
WHERE  FirstName = @FirstName and LastName = @LastName

CREATE procedure dbo.QEUpdateaddrbook(
@CompanyName varchar(20), 
@MailDomain varchar(20), 
@MailServer varchar(20), 
@MiddleInitial varchar(1),
@State varchar(20),
@MailAddress varchar(20), 
@FirstName varchar(20), 
@LastName varchar(20))
as
UPDATE Venturi.addrbook SET
MailDomain=@MailDomain, MailServer=@MailServer, MailAddress=@MailAddress, CompanyName=@CompanyName, State=@State 
WHERE 
FirstName=@FirstName and LastName=@LastName

次の図は、これらのストアドプロシージャを Virtual Fields アクティビティ文書で参照する方法を示しています。

OLE DB example with stored procedures bmp

OLE DB connection document  with field mapping bmp