所以我有一個的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