我有一个存储过程,它返回几个表(当前由Web服务使用)。我现在需要将该输出插入SQL Server数据库。
如果我通过
知道现有的定义,我可以插入一个表INSERT INTO #temp
EXEC ('myProcSQlhere')
但为此,我需要提前知道输出表的定义。
SELECT *
INTO #temp
FROM OPENQUERY(SERVERNAME, 'EXEC myProcSQlhere')
了解表定义,但只允许进入一个表。那么如何将数据插入多个表?
答案 0 :(得分:3)
存储过程只能返回一个值。您的存储过程执行的操作是执行多个选择,因此提供多个结果集。这适用于可以使用多个结果集但却陷入SQL-Server的系统。
检查存储过程是否尚未为每个结果集调用独立的存储过程,如果是,请调用它们。或者使用存储过程的定义并按顺序调用每个查询。
如果您无法访问提供存储过程的系统,则需要实现CLR stored procedure和fetch each result set以将结果存储到不同的表中。