在sql server中的运算符问题

时间:2013-08-16 08:32:07

标签: sql sql-server-2005

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')Ms 2812,Level 16,State 62,Line 9可以   找不到存储过程'SELECT * FROM ITEM WHERE GROUPNAME   IN('股票在手中','商店','产品')'。

3 个答案:

答案 0 :(得分:2)

此命令

execute @SQL

运行程序。如果要运行动态sql,则应使用以下命令:

exec (@SQL)

您也可以使用

execute sp_sqlexec @SQL

答案 1 :(得分:1)

我建议使用sp_executesql,例如:

exec sp_executesql @stmt = @SQL

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

答案 2 :(得分: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