我有一个这样的存储过程:

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

我有错误



请解决这个问题

最佳答案

尝试使用比子查询性能更好的临时表

DECLARE @userIds NVARCHAR(MAX)
SET @userIds ='1,2,3,4,5,6'

CREATE table #TempUser
(
    userId Int
)
DECLARE @SplitOn VARCHAR(1)
SET @SplitOn = ','

While (Charindex(@SplitOn,@userIds)>0)
Begin
    Insert Into #TempUser (userId)
    Select
        userId = ltrim(rtrim(Substring(@userIds ,1,Charindex(@SplitOn,@userIds )-1)))
    Set @userIds = Substring(@userIds,Charindex(@SplitOn,@userIds)+1,len(@userIds))
End

Insert Into #TempUser (userId)
Select Data = ltrim(rtrim(@userIds))

SELECT * FROM #TempUser

现在您可以使用这个临时表更新您的记录。

关于c# - 使用 IN 子句更新 SQL Server 中的多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17609717/

10-10 16:17