我有一个接受多个 varchar(4000) 参数(其中 26 个)的过程。
它们中的每一个都是逗号分隔的值字符串。
一旦它们被传入,我想将每个字符串分开并将它们插入到临时表中,以便稍后在 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