我有一个这样的存储过程:
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/