0

我有以下程序:

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 变量中加上引号。

任何线索如何将“,状态='打开'”添加到我的查询中?

4

2 回答 2

4

使用两个引号:

SET @vSQL = 'UPDATE Clients SET LastOnline=GETDATE(), Status=''Open'' WHERE ClientID IN (' + @ClientIDs  + ')';
于 2012-10-01T09:49:23.553 回答
2

我建议将客户端 ID 作为表值参数而不是字符串传递。然后你可以只写 SQL,而不是动态 SQL。

于 2012-10-01T09:54:38.333 回答