1
我有以下情況:存儲過程的where子句參數
----------------
ID | Type
----------------
1 | AB
2 | CD
3 | EF
現在,我需要爲這個查詢在存儲過程中的查詢是:
SELECT * FROM Table_Name WHERE TYPE IN ('AB','CD','EF')
我已經寫了以下程序:
CREATE PROCEDURE dbo.usp_get_all
@Type VARCHAR(200)
AS
BEGIN
SELECT * FROM Table_Name WHERE TYPE IN (@Type)
END
只有當我以下面的方式調用它時,此查詢才能正常工作:
EXEC usp_get_all 'AB'
現在,有可能會像下面的情況,這是不工作
EXEC usp_get_all '''AB'',''CD'',''EF'''
我的問題:
我不希望使用任何功能拆分逗號分隔輸入參數。只有通過使用輸入參數我想得到相同的結果,如:
SELECT * FROM Table_Name WHERE TYPE IN ('AB','CD','EF')
有沒有什麼辦法可以做到這一點?我可以使用動態SQL嗎?如果可以,在這種情況下我該如何使用它?
事端這樣嗎? http://stackoverflow.com/questions/15024219/conversion-failed-in-cursor-in-stored-procedure/15038078#15038078 – bummi 2013-03-05 11:31:33
你知道單個字符串參數之間有一個邏輯上的區別,它可能碰巧包含' '和','字符和多個字符串參數,用逗號分隔? – 2013-03-05 11:37:15