-1
dECLARE @LS_SQL CHAR(100)
dECLARE @SQL varCHAR(max)
SET @LS_SQL=ltrim('''STOCK IN HAND'',''STORE'',''PRODUCT''')

set @SQL='SELECT * FROM ITEM WHERE GROUPNAME IN(' + rtrim(@LS_SQL) + ')'
PRINT @SQL
execute @SQL

结果

SELECT * FROM ITEM WHERE GROUPNAME IN('STOCK IN HAND','STORE','PRODUCT') Msg 2812, Level 16, State 62, Line 9 找不到存储过程 'SELECT * FROM ITEM WHERE GROUPNAME IN('STOCK IN手','商店','产品')'。

4

3 回答 3

2

这个命令

execute @SQL

运行一个程序。如果你想运行动态 sql,你应该使用下面的命令:

exec (@SQL)

你也可以使用

execute sp_sqlexec @SQL
于 2013-08-16T08:35:40.373 回答
1

我建议使用sp_executesql,例如:

exec sp_executesql @stmt = @SQL

您可以在此处查看更多帮助Dynamic SQL - EXEC(@SQL) 与 EXEC SP_EXECUTESQL(@SQL)

于 2013-08-16T08:36:14.143 回答
0

尝试这个

dECLARE @LS_SQL CHAR(100)
dECLARE @SQL varCHAR(max)
SET @LS_SQL=ltrim('''STOCK IN HAND'',''STORE'',''PRODUCT''')

set @SQL='SELECT * FROM ITEM WHERE GROUPNAME IN(' + rtrim(@LS_SQL) + ')'
PRINT @SQL
execute sp_sqlexec @SQL
于 2013-08-16T08:41:25.877 回答