使用过程输出的动态表

时间:2017-02-14 05:52:26

标签: sql sql-server stored-procedures dynamic-queries

我有2个程序p1和p2,每个程序的结果格式如下

exec p1----> #col1 #col2
              P-1   52
              P-2   25

EXEC p2----> #col1 #col2
              P-1   20
              P-2   2
              P-3   5

我想在另一个程序中调用这些程序,这个程序将执行两个程序,创建一个临时表并插入两个表的结果,如下所示:

#col1 #col2 #col3
P-1    52    20
P-2    25    2
P-3    NULL  5

我是新手使用Temp表,任何帮助将不胜感激。 此代码必须在SQL Server中运行。 的问候,

1 个答案:

答案 0 :(得分:0)

我想这就是你想要的。尝试一下它可以帮到你

根据您的程序输出,请按照以下查询

create table #tempp (col1 varchar(50),col2 bigint)

insert into #temp
exec p1

create table #tempp1 (col1 varchar(50),col2 bigint)

insert into #tempp1
exec p2

select t1.col1,t.col2,t1.col2 from #tempp t
full join #tempp1 t1 on t.col1=t1.col1

我已创建样本数据,就像您的过程输出数据一样,并在我的数据库

中尝试过
              select * into #tempp from (
              select 'p-1' as col1,52 col2
              union all
              select 'p-2',25
              ) as a

              select * into #tempp1 from (
              select 'p-1' as col1,20 col2
              union all
              select 'p-2',2
                union all
              select 'p-3',5
              ) as a

select t1.col1,t.col2,t1.col2 from #tempp t
full join #tempp1 t1 on t.col1=t1.col1

您的输出看起来像

+------+------+------+
| col1 | col2 | col2 |
+------+------+------+
| p-1  | 52   |   20 |
| p-2  | 25   |    2 |
| p-3  | NULL |    5 |
+------+------+------+