我有一个正在存储过程中运行的查询。但是,会产生错误:
Incorrect syntax near 'CHEQUE'
查询是:
SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE='CHQ' WHERE RATE=1'
如何在不出现错误的情况下指定此字符串“CHQ”?
最佳答案
在动态 SQL 字符串中指定字符串文字时,您必须用另一个单引号转义单引号(例如:''
,而不是 "
,它是双引号) 所以查询将是这样的:
SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE=''CHQ'' WHERE RATE=1'
这会将其翻译成:
UPDATE [dbo].[ATAB] SET PAYMCODE='CHQ' WHERE RATE=1
如果您想将 CHQ
存储到变量中,或者使用 EXEC
并指定如下参数,您也可以使用 Nate S 的答案:
DECLARE @Paymcode varchar(3) = 'CHQ'
DECLARE @SQL nvarchar(max)
DECLARE @Params nvarchar(max)
SET @SQL = N'UPDATE [dbo].[ATAB] SET PAYMCODE=@innerPaymcode WHERE RATE=1'
SET @Params = N'@innerPaymcode varchar(3)'
EXEC sp_executesql @SQL, @innerPaymcode = @Paymcode
关于sql - 在存储过程查询中指定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30360170/