【发布时间】:2013-01-14 18:41:18
【问题描述】:
可能重复:
Parameterizing an SQL IN clause?
Passing an array of parameters to a stored procedure
我需要将一组唯一标识符传递给我的存储过程。我写了这个查询来测试我想要做什么:
SELECT *
FROM MyTable
WHERE MyTable.TypeId IN ('852D7F39-302A-4E35-94D4-9A0335F8E9DC,1DF6EAA0-D0EC-4E4D-9E6B-1779F0E42A82')
此查询运行正确。所以我创建了这个存储过程:
CREATE PROCEDURE [dbo].[MySproc] (
@TypeIdsList varchar(8000)
) AS
BEGIN
EXEC(
'SELECT *
FROM MyTable
WHERE MyTable.TypeId IN (' + @TypeIdsList + ')'
)
END
但是当我用一些示例数据执行它时:
DECLARE @return_value int
EXEC @return_value = [dbo].[MySproc]
@TypeIdsList = N'852D7F39-302A-4E35-94D4-9A0335F8E9DC,1DF6EAA0-D0EC-4E4D-9E6B-1779F0E42A82'
SELECT 'Return Value' = @return_value
GO
我收到此错误:
“D7F39”附近的语法不正确。
有人知道我做错了什么吗?
【问题讨论】:
标签: sql sql-server tsql stored-procedures