首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将存储过程的结果插入临时表中

将存储过程的结果插入临时表中
EN

Stack Overflow用户
提问于 2009-03-17 10:45:26
回答 30查看 2.4M关注 0票数 1.8K

我该怎么做SELECT * INTO [temp table] FROM [stored procedure]?不是FROM [Table],也没有定义[temp table]

SelectBusinessLinetmpBusLine的所有数据都能正常工作。

代码语言:javascript
运行
复制
select *
into tmpBusLine
from BusinessLine

我正在尝试同样的方法,但是使用返回数据的stored procedure并不完全一样。

代码语言:javascript
运行
复制
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'

输出消息:

Msg 156,第15级,状态1,第2行不正确的语法靠近关键字'exec‘。

我读过几个创建临时表的示例,这些表的结构与输出存储过程的结构相同,运行良好,但最好不要提供任何列。

EN

回答 30

Stack Overflow用户

发布于 2009-08-04 15:27:34

为此您可以使用开环。看一看。我还包括了sp_configure代码,以便在尚未启用的情况下启用also分布式查询。

代码语言:javascript
运行
复制
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
票数 756
EN

Stack Overflow用户

发布于 2009-03-17 14:08:11

如果您想在不首先声明临时表的情况下这样做,可以尝试创建用户定义的函数而不是存储过程,并使该用户定义的函数返回一个表。或者,如果您想使用存储过程,请尝试如下所示:

代码语言:javascript
运行
复制
CREATE TABLE #tmpBus
(
   COL1 INT,
   COL2 INT
)

INSERT INTO #tmpBus
Exec SpGetRecords 'Params'
票数 711
EN

Stack Overflow用户

发布于 2009-03-17 10:50:17

在Server 2005中,可以使用INSERT INTO ... EXEC将存储过程的结果插入表中。来自文档 (实际上用于Server 2000 ):

代码语言:javascript
运行
复制
--INSERT...EXECUTE procedure example
INSERT author_sales EXECUTE get_author_sales
票数 318
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/653714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档