BizTalk マッパーは XSLT 2.0 をサポートしていません (MSDN ドキュメントhttp://msdn.microsoft.com/en-us/library/aa559261(BTS.10).aspxを参照) 。マッパーを使用します。
BizTalk マッパー内で EXSLT を使用する方法について説明している、Richard Hallgren による素晴らしい投稿があります。
もう1つの考えは、代替ソリューションについてです。データベース呼び出しを 1 つずつ行う必要があるかどうかは明確ではありません。1 回の呼び出しでうまくいくのでしょうか。
ストアド プロシージャに区切り文字列をパラメーターとして指定し、関数を使用してこの文字列を分割することができます。そのような関数の例を以下に示します。その例はテーブル関数です。ウェブ上で他の多くの実装を見つけることができます。
テーブル関数を使用すると、ストア ルックアップ プロシージャでこれに対して結合できます。
これでニーズが満たされる場合は、データベース ヒットを 1 回だけ実行し、セット操作を実行してストアのリストを取得できるため、はるかに高速になるはずです。
CREATE function fn_ParseCSVString
(
@INPUTCSV varchar(MAX)
)
RETURNS @TBL TABLE
(
COL1 INT
)
AS
BEGIN
DECLARE @NUM_STR NVARCHAR(MAX)
SET @NUM_STR = @INPUTCSV
SET @NUM_STR = REPLACE(@NUM_STR,' ','')
-- this will trim any intermediate spaces
WHILE LEN(@NUM_STR) >= 0
BEGIN
DECLARE @@SUBSTR VARCHAR(100)
IF CHARINDEX(',',@NUM_STR,0) <> 0
BEGIN
SET @@SUBSTR = SUBSTRING(@NUM_STR,0,CHARINDEX(',',@NUM_STR,0))
INSERT INTO @TBL VALUES(@@SUBSTR)
END
ELSE
BEGIN
INSERT INTO @TBL VALUES(@NUM_STR)
BREAK
END
SET @@SUBSTR = @@SUBSTR + ','
SET @NUM_STR = SUBSTRING(@NUM_STR, CHARINDEX(',',@NUM_STR,0) + 1, LEN(@NUM_STR))
END
RETURN
END