sql - 在存储过程查询中指定字符串

标签 sql sql-server sql-server-2008

我有一个正在存储过程中运行的查询。但是,会产生错误:

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/

相关文章:

sql - 在 SQL Server 2008 中插入表使用数组

.net - 将数据从 ODBC 源合并到 SQL Server 数据库的最有效方法

sql-server-2008 - 存储过程中可为空的表值参数

c# - 处理大量数据的任何好方法?

sql - 嵌套查询或连接

mysql - 禁用 MySQL 的 UNION SELECT 查询

sql-server - SQL Server 数据库 : INSERT query blocked with wait type LCK_M_IX

sql-server - 使用带参数的 DISTINCT 时 select 语句性能下降

java - 将我的 Java 应用程序连接到 SQL Server 2012

sql - 使用 Excel 宏 (ADODB) 在 SQL Server 2008 中创建临时表