如何将游标的结果插入到临时表中

How to insert result from a cursor into a tempTable

我查询的数据库大约有 60 个,它们具有相同的 table;但是,我希望将我的查询结果插入临时 table 中,以便我可以使用存储在该临时 table 中的结果创建格式良好的报告。 我该如何实现? 下面是我循环遍历每个数据库的查询和 运行 对 select 所有活动订单的查询:

DECLARE @db_name Varchar(100)

DECLARE @SQL Varchar(3000)

DECLARE c_db_names CURSOR FOR
SELECT name 
FROM master.dbo.sysdatabases
WHERE name NOT IN('master','AdventureWorks2008','TestDB','Development','Northwind') --might need to exclude more databases

OPEN c_db_names

FETCH c_db_names INTO @db_name

WHILE @@Fetch_Status = 0
BEGIN   

SET @SQL = 'SELECT OrderID, OrderStatus, OrderDetails, FulfillmentDate, ShippingDate , AddDate from 
       '+ @db_name +'.dbo.ActiveOrders inner join '+ @db_name +'.dbo.FinalShipmentNumbers on '+ @db_name +'.dbo.ActiveOrders.OrderDetails = 
       '+ @db_name +'.dbo.FinalShipmentNumbers.OrderID where addDate between ''1/30/2016'' and ''2/26/2016'''

SELECT @db_name As Client_Name
EXEC(@SQL)      
FETCH c_db_names INTO @db_name
END

CLOSE c_db_names
DEALLOCATE c_db_names

这是基本语法。

SET @SQL = 'INSERT #YourTempTableHere (ColumnList)
SELECT OrderID, OrderStatus, OrderDetails, FulfillmentDate, ShippingDate , AddDate from 
       '+ @db_name +'.dbo.ActiveOrders inner join '+ @db_name +'.dbo.FinalShipmentNumbers on '+ @db_name +'.dbo.ActiveOrders.OrderDetails = 
       '+ @db_name +'.dbo.FinalShipmentNumbers.OrderID where addDate between ''1/30/2016'' and ''2/26/2016'''