2017-08-16 41 views
0

我執行一些代碼:如何插入動態SQL結果到臨時表

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不是有效的標識符。」

回答

0

您應該使用EXEC(@SQL)here

最好是改用exec sp_executesql @SQL,它給你的參數設置和幫助agains SQL注入。特別是因爲你已經在你的查詢中使用了它(使用不同的方法來完成同樣的事情從來都不是一個好主意)。見here