将存储过程的结果插入临时表中
我如何做一个SELECT * INTO [temp table] FROM [stored procedure]
? 不是FROM [Table]
并且没有定义[temp table]
?
Select
从BusinessLine
到tmpBusLine
所有数据tmpBusLine
可以正常工作。
select *
into tmpBusLine
from BusinessLine
我尝试的是相同的,但使用返回数据的stored procedure
并不完全相同。
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
输出消息:
Msg 156,Level 15,State 1,Line 2关键字'exec'附近的语法错误。
我已经阅读了几个创建与输出存储过程相同的结构的临时表的示例,该示例工作正常,但不提供任何列是很好的。
你可以使用OPENROWSET。 看一看。 如果尚未启用Ad Hoc分布式查询,我还包含sp_configure代码以启用Ad Hoc分布式查询。
CREATE PROC getBusinessLineHistory
AS
BEGIN
SELECT * FROM sys.databases
END
GO
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
SELECT * INTO #MyTempTable FROM OPENROWSET('SQLNCLI', 'Server=(local)SQL2008;Trusted_Connection=yes;',
'EXEC getBusinessLineHistory')
SELECT * FROM #MyTempTable
如果你想在不首先声明临时表的情况下执行该操作,则可以尝试创建用户定义的函数而不是存储过程,并使该用户定义的函数返回一个表。 或者,如果您想使用存储过程,请尝试如下所示:
CREATE TABLE #tmpBus
(
COL1 INT,
COL2 INT
)
INSERT INTO #tmpBus
Exec SpGetRecords 'Params'
在SQL Server 2005中,您可以使用INSERT INTO ... EXEC
将存储过程的结果插入到表中。 从MSDN的INSERT
文档(对于SQL Server 2000,实际上):
--INSERT...EXECUTE procedure example
INSERT author_sales EXECUTE get_author_sales
链接地址: http://www.djcxy.com/p/4217.html
上一篇: Insert results of a stored procedure into a temporary table