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