我有一個過程,接受多個varchar(4000)參數(其中26)。Concat參數名稱循環params
他們每個人都是一個逗號分隔的值的字符串。
一旦它們被傳入,我想將每個字符串分開並將它們插入臨時表中以供稍後在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參數編寫語句來完成我想要完成的任務?
謝謝, Ç
您使用的是哪個版本的SQL Server? – Oded
我正在使用2008 R2 – csza
你有什麼_loading_這些參數?這幾乎可以肯定這是做到這一點的「錯誤」方式。 @ Oded的答案看起來應該是好的;如果這不起作用,你可以通過'LOAD'(我想,也許是'IMPORT'?)將數據加載到臨時表中,然後從那裏進行一次批量更新。 –