複数のvarchar(4000)パラメータ(26個)を受け入れるプロシージャがあります。パラメータをループするためのconcatパラメータ名
それぞれはコンマで区切られた値の文字列です。
これらの文字列が渡されると、それぞれの文字列を分割し、後でprocで使用できるように一時テーブルに挿入したいと思います。
私は、各パラメータを個別に処理する文章を書くのではなく、カウンタに依存して各パラメータをループして順番に処理する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
使用しているSQL Serverのバージョンは? – Oded
私は2008 R2を使用しています – csza
これらのパラメータはどれくらいありますか?これは、これを行うための「間違った」方法がほぼ確実です。 @オデッドの答えはそれが良いはずだと思われる。それがうまくいかない場合は、 'LOAD'を介して一時テーブルにデータをロードすることができます(おそらく' IMPORT'ですか?)。 –