2015-05-20 2 views
2

У меня есть запрос, который я запускаю в хранимой процедуре. Однако, это производит ошибку:Укажите строку в запросе хранимой процедуры

Incorrect syntax near 'CHEQUE' 

Этот запрос:

SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE='CHQ' WHERE RATE=1' 

Как указать эту строку 'CHQ' не получаю сообщение об ошибке?

ответ

3

Вам нужно избегать одиночных кавычек.

SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE=''CHQ'' WHERE RATE=1' 
4

При указании строкового литерала в динамической строке SQL вы должны избежать одного цитаты с другой одной цитатой (например: '', не " что двойная цитата) Таким образом, запрос будет выглядеть следующим образом:

SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE=''CHQ'' WHERE RATE=1' 

Это переведет его:

UPDATE [dbo].[ATAB] SET PAYMCODE='CHQ' WHERE RATE=1 

вы также можете использовать ответ Nate S, если вы хотите сохранить CHQ в переменную, или использовать EXEC с указанием параметров, например:

DECLARE @Paymcode varchar(3) = 'CHQ' 
DECLARE @SQL nvarchar(max) 
DECLARE @Params nvarchar(max) 

SET @SQL = N'UPDATE [dbo].[ATAB] SET [email protected] WHERE RATE=1' 
SET @Params = N'@innerPaymcode varchar(3)' 

EXEC sp_executesql @SQL, @innerPaymcode = @Paymcode 
1

Вам нужно бежать одинарные кавычки в коде

SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE = ''CHQ'' WHERE RATE = 1' 
3

Просто быть разными ...

Declare @PaymMode varchar(3) = 'CHQ'; 
SELECT @QUERY1 = 'UPDATE [dbo].[ATAB] SET PAYMCODE='[email protected]+' WHERE RATE=1'; 
+1

Это также может работать или использовать 'EXEC' с указанием параметров. –

+1

это также позволит централизованно обновлять код оплаты ... не то, что в этом случае необходимо его –

Смежные вопросы