在动态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
答案 0 :(得分:2)
尝试一下。我更改了动态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