1.將查詢數據插入臨時表
最開始我這么寫的
DECLARE @sql varchar(max) SET @sql='select * into #tmp from tb' EXEC(@sql) SELECT * FROM #tmp
報錯
對象名'#tmp'無效
可以改成這樣子
CREATE TABLE #tmp(....) DECLARE @sql varchar(max) SET @sql='select * from tb' INSERT #tmp EXEC(@sql) SELECT * FROM #tmp
即先創建一個臨時表,然后把數據插入臨時表中。
可以直接使用全局臨時表實現這個功能
DECLARE @sql varchar(max) SET @sql='select * into ##tmp from tb' EXEC(@sql) SELECT * FROM ##tmp
2.將查詢結果保存到變量
開始我是這么寫的
DECLARE @sum INT DECLARE @sql varchar(max) SET @sql='select @sum=sum(f1) from tb' EXEC sp_executesql @sql,N'@sum int',@sum output
會報錯
過程需要類型為'ntext/nchar/nvarchar'的參數'@statement'
發現需要把@sql的類型從varchar改成nvarchar
