我有以下过程:
ALTER PROCEDURE [dbo].[UpdateAllClients]
@ClientIDs varchar(max)
AS
BEGIN
SET NOCOUNT ON
DECLARE @vSQL varchar(max)
SET @vSQL = 'UPDATE Clients SET LastOnline=GETDATE() WHERE ClientID IN (' + @ClientIDs + ')';
EXEC(@vSQL);
END
该@ClientIDs包含许多客户端 ID 的数组,我想更新客户端表中的另一个字段,因此我希望查询如下所示:
UPDATE Clients SET LastOnline=GETDATE(), Status='Open' WHERE ClientID IN (@ClientIDs)
问题是我可以在@vSQL变量内加上引号。
任何线索如何将", 状态='打开'"添加到我的查询中?
使用两个引号:
SET @vSQL = 'UPDATE Clients SET LastOnline=GETDATE(), Status=''Open'' WHERE ClientID IN (' + @ClientIDs + ')';
我建议将客户端 ID 作为表值参数而不是字符串传递。然后你可以只编写SQL,而不是动态SQL。