我有这样一个存储过程:在SQL Server更新多行与IN子句
CREATE PROCEDURE Resume
@UserID nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
update Candidate set Approved = 'y' where UserId_I in (@UserID)
END
GO
在这个@UserID
是字符串格式。我从代码发送参数@UserID
的值为1,2,3
作为字符串。
我误差作为
转换nvarchar的值 '1,2,3' 为数据类型int时转换失败。
请解决这个
对'in“的多个单独参数在逻辑上是不同的t来自*发生的*单个*字符串参数,以包含逗号。与几乎所有其他编程语言一样,SQL不会神奇地决定检查字符串并改变它。正确的解决方法是首先不传递字符串 - 传递(理想情况下)表值参数或XML文档 - 设计为包含多个值的东西。毫无疑问,你会得到答案(或接近投票)指向在服务器上创建分割函数,但这确实是错误的方法。 –