如何从存储过程插入temptable

时间:2016-03-28 10:19:30

标签: sql sql-server-2008 stored-procedures

我有以下两个程序

1)PROC_A在执行时给出两个表,例如Table1和Table2

2)在PROC_B中我需要将执行PROC_A返回的Table1的内容插入到PROC_B内的temptable中,TABLE1的列可能会改变

我在PROC_B中尝试这样的东西

 INSERT INTO #tem1 FROM EXEC PROC_A

我怎么能这样做呢?

2 个答案:

答案 0 :(得分:0)

如果您的临时表已经定义,那么您可以

INSERT INTO #tem1 
EXEC PROC_A

如果没有,

sELECT * INTO #tem1 
FROM OPENROWSET('SQLNCLI', 'server=(local);trusted_connection=yes', 
'your query')

您还需要启用ADhoc分布式查询才能使开放查询正常工作..

sp_configure 'show advanced options', 1
reconfigure 
go
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure

您还可以在2012年使用描述结果集DMV,查看为查询返回的数据类型。想法是将描述结果集的输出插入到临时表中并动态构建一个..如果您的SP结果是两个结果集,请注意,只有一个会被退回..

sp_describe_first_result_set @tsql = N'SELECT object_id, name, type_desc FROM sys.indexes'

答案 1 :(得分:0)

CREATE TABLE #tmp
(
    Col1 SMALLINT,
    Col2 SMALLINT,
    Col3 SMALLINT,
    Col4 SMALLINT,
    Col5 SMALLINT,
    .
    .
    .
)

INSERT INTO #tmp
EXEC PROC_A

SELECT * FROM #tmp

Drop table #tmp

这对你有用......