我有一个sql存储过程,它接受2个输入并根据给定的输入返回结果集。 我在sql IN子句中使用input1,如
WHERE myCol IN(@input1)
从水壶表输入步骤执行存储过程时, 如果我为input1提供单个值,它可以正常工作。
EXEC sp_procedureName @input1='07423', @input2='2014-09-02'
如果我给出如下的多个值,则结果为空结果。
EXEC sp_procedureName @input1='07423,07022,07033', @input2='2014-09-02'
如何将多个值作为参数传递给我的过程。 转换将执行该过程并使用表输出步骤将结果集插入另一个表中。
答案 0 :(得分:0)
在存储过程中需要执行的操作是将逗号分隔的数字列表拆分为行中单个值的列表。完成此操作后,您可以使用WHERE myCol IN(SELECT v FROM @r)
,或使用INNER JOIN而不是IN。你可能需要注意的一点是你有前导零 - 如果你想保留那些你需要使用字符串而不是整数。
关于将分隔值拆分为行的主题有很多文章,你可以开始here。