所以我有一个的Sybase存储过程,在一个IN()子句需要1个参数,这是一个逗号分隔的字符串列表,并运行一个查询在:如何将逗号分隔列表传递给存储过程?
CREATE PROCEDURE getSomething @keyList varchar(4096)
AS
SELECT * FROM mytbl WHERE name IN (@keyList)
我怎么叫我的存储过程有超过1值在列表中? 到目前为止,我已经试过
exec getSomething 'John' -- works but only 1 value
exec getSomething 'John','Tom' -- doesn't work - expects two variables
exec getSomething "'John','Tom'" -- doesn't work - doesn't find anything
exec getSomething '"John","Tom"' -- doesn't work - doesn't find anything
exec getSomething '\'John\',\'Tom\'' -- doesn't work - syntax error
编辑:我居然发现这个page拥有的各种方式有很大的参考,以考绩阵列,以一个存储过程
我希望你找到了适合你的方法。 链接的页面是一个很好的选项列表,但我很高兴看到大多数已经在这里建议! 保罗建议方法2/3,临时表。 我建议方法1,动态sql。 Brian和Abel提出了一种XML方法,虽然我没有在sybase中获得xml的许可,所以不知道这是否能在Sybase中工作。类似于方法4. – AdamH 2009-08-21 13:17:35
可能重复[参数化SQL IN子句?](http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-条款) – icc97 2014-02-04 15:19:53