如何将游标的结果插入到临时表中
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'''
我查询的数据库大约有 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'''