SQL Server:将存储过程的多表输出插入到单独的表中

时间:2017-01-27 10:10:15

标签: sql sql-server tsql stored-procedures

我有一个存储过程,它返回几个表(当前由Web服务使用)。我现在需要将该输出插入SQL Server数据库。

如果我通过

知道现有的定义,我可以插入一个表
INSERT INTO #temp
    EXEC ('myProcSQlhere')

但为此,我需要提前知道输出表的定义。

SELECT *
INTO #temp
FROM OPENQUERY(SERVERNAME, 'EXEC myProcSQlhere')

了解表定义,但只允许进入一个表。那么如何将数据插入多个表?

1 个答案:

答案 0 :(得分:3)

存储过程只能返回一个值。您的存储过程执行的操作是执行多个选择,因此提供多个结果集。这适用于可以使用多个结果集但却陷入SQL-Server的系统。

检查存储过程是否尚未为每个结果集调用独立的存储过程,如果是,请调用它们。或者使用存储过程的定义并按顺序调用每个查询。

如果您无法访问提供存储过程的系统,则需要实现CLR stored procedurefetch each result set以将结果存储到不同的表中。