引号的 SQL 转义字符



我有以下过程:

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。

最新更新