【问题标题】:Inserting multiple result sets of a stored procedure into a temporary table将存储过程的多个结果集插入到临时表中
【发布时间】:2021-01-10 02:43:25
【问题描述】:

我有一个返回多个结果集的存储过程。我正在尝试将所有结果的列值检索到临时表中。有可能吗?

我的存储过程返回如下所示的列。我返回了大约 10 多个结果集,每个结果集都有一个 tid 列。

有没有办法将tId's 选择到临时表中。

【问题讨论】:

  • 或者您可以在调用您的 SP之前创建一个临时表,然后让您的 SP 直接插入到临时表中。
  • @Dale K,如果结果集具有不同的架构,如何创建临时表
  • 如果这确实是最适合您的解决方案,您必须创建一个涵盖所有表的所有列的超级模式。给定结果集未使用的列将为空。

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


【解决方案1】:

只有当每个行集的输出定义与表模式匹配(不是您的情况)时,您才会将所有数据集收集到一个表中,因此我建议在存储过程中准备联合数据集并将其单独输出或作为输出表变量输出。

create procedure proc_multi as
begin
select 1 id;
select 2 id;
end;

create table #t (id int);

insert into #t
    exec proc_multi;

select * from #t;

id
-----------
1
2

(2 rows affected)

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2020-01-26
    • 2011-09-17
    • 2020-12-05
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    相关资源
    最近更新 更多