【发布时间】:2013-07-12 07:29:33
【问题描述】:
我有一个这样的存储过程:
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的多个单独参数在逻辑上与 恰好 包含逗号的 单个 字符串参数不同。 SQL 与几乎所有其他编程语言一样,不会神奇地决定检查字符串并更改它。对此的正确解决方案是首先不要传递 字符串——传递(理想情况下)表值参数或XML 文档——旨在包含多个值的东西。毫无疑问,您会得到指向在服务器上创建拆分函数的答案(或接近投票),但这确实是错误的方法。
标签: c# sql sql-server