Неверный синтаксис в динамическом sql - PullRequest
0 голосов
/ 20 апреля 2019

При выполнении ниже динамического SQL я получаю ошибку

Неверный синтаксис рядом с ','

Код:

declare @site varchar(40) = ''

begin
    EXECUTE SP_EXECUTESQL SELECT TP.F_PRODUCT AS ID FROM PDF_MSDS_NEW TP WHERE TP.F_AUTHORIZED IN(1,3) AND TP.F_PRODUCT <>'' AND (TP.F_TEXT_CODE LIKE @SITE), @SITE NVARCHAR(10),SITE0001
end

Теперь я изменил свой запрос выше. Сейчас не отображается сообщение об ошибке, но вывод не приходит.

CREATE TABLE PDF_MSDS_NEW(F_PRODUCT VARCHAR(50),F_AUTHORIZED INT,F_TEXT_CODE VARCHAR(100))

INSERT INTO PDF_MSDS_NEW VALUES('F0001',1,'SITE0001')

DECLARE
@SITE VARCHAR(100),
@statement nvarchar(max)
BEGIN
set @SITE='SITE0001'
set @statement ='SELECT TP.F_PRODUCT AS ID FROM PDF_MSDS_NEW TP WHERE TP.F_AUTHORIZED IN(1,3)AND TP.F_PRODUCT <>'''' AND (TP.F_TEXT_CODE LIKE @SITE)'
PRINT @statement
EXECUTE SP_EXECUTESQL @statement ,N'@SITE NVARCHAR',@SITE
END

1 Ответ

2 голосов
/ 23 апреля 2019

Попробуй это.Я изменил ваш динамический SQL, чтобы принять параметр в операторе Set.

CREATE TABLE PDF_MSDS_NEW(F_PRODUCT VARCHAR(50),F_AUTHORIZED INT,F_TEXT_CODE VARCHAR(100))

INSERT INTO PDF_MSDS_NEW VALUES('F0001',1,'SITE0001')

DECLARE
@SITE VARCHAR(100),
@statement nvarchar(max)
BEGIN
set @SITE='SITE0001'
set @statement ='SELECT TP.F_PRODUCT AS ID FROM PDF_MSDS_NEW TP WHERE TP.F_AUTHORIZED IN(1,3)AND TP.F_PRODUCT <>'''' AND (TP.F_TEXT_CODE LIKE ''' + @SITE + ''')'
PRINT @statement
EXECUTE SP_EXECUTESQL @statement 
END
...