複数の varchar(4000) パラメータ (26 個) を受け入れるプロシージャがあります。
それぞれは、カンマで区切られた値の文字列です。
それらが渡されたら、各文字列を分割して一時テーブルに挿入し、後でプロシージャで使用できるようにします。
各パラメーターを個別に処理するステートメントを作成するのではなく、カウンターに依存して各パラメーターをループし、それぞれを順番に処理する while ループを作成することをお勧めします。現在、次のことを試しましたが、正しくありません。
CREATE PROCEDURE [dbo].[myproc] (
@string1 varchar(4000) = null;
@string2 varchar(4000) = null;
@string3 varchar(4000) = null;
....declare @string4 -> @string25...
@string26 varchar(4000) = null;)
CREATE TABLE #emails (
address varchar(80)
)
Set @counter = 1
WHILE @counter < 27
BEGIN
INSERT INTO #emails(address) SELECT element as address from FT_SPLIT_LIST(isNull('@string'+convert(varchar,@counter),''),',')
SET @counter = @counter +1
END
SELECT * FROM #emails
現在、これは @string1 -> @string26 からのすべての CSV を含むテーブルを返しません。
FT_SPLIT_LIST は機能します。他の多くの場所で使用しています。渡されるパラメーターを動的に宣言する方法があるかどうかを知る必要がありますか?
@string1->@string27 パラメータごとにステートメントを書かずに、私が達成しようとしていることを行う方法はありますか?
ありがとう、C