如何将动态SQL结果插入临时表

时间:2017-08-16 08:05:02

标签: sql-server database stored-procedures temp-tables

我实现了一些代码:

BEGIN

DECLARE 
         @SQL  AS NVARCHAR(MAX),
         @TempTable AS NVARCHAR(MAX)

SET @SQL = 'SELECT * from Employee where Instance_ID = 1';


BEGIN 

CREATE TABLE ##tempResults (SQL NVARCHAR(4000))
INSERT INTO ##tempResults EXEC @SQL;

SET @TempTable= 'select * from #tempResults ORDER BY CASE WHEN ' + @index+ ' =1 THEN [First Name] END DESC '+ ',' + ' CASE WHEN ' + @index + '=2 THEN [Last name] END DESC'

END 

EXEC sp_executesql @TempTable; 

END

我想将动态结果插入临时表但我无法执行语句并获取错误。请告诉我我应该怎么做?

显示错误:

  

“消息203不是有效的标识符。”

1 个答案:

答案 0 :(得分:0)

您应该使用EXEC(@SQL)请参阅here

建议切换到exec sp_executesql @SQL,它为您提供参数化并帮助重新进行sql注入。特别是因为您已经在查询中使用了它(使用不同的方法来完成同样的事情从来都不是一个好主意)。见here