sqlserver 存储过程接收另一个存储过程返回的两个表

时间:2022-01-26 05:56:50
想在 procA 里接受  procB 里返回的两个表


procB  大概写法
select * from table1 where .............
select * from table2 where .............
reutrn



想在procA里接收procB里返回的俩表,请问我在procA里应该怎么写???
(注:我的procB是个公共存储过程,好几个功能都要调用procB,所以不想修改procB的存储过程。)

17 个解决方案

#1


没办法的

#2


不改木办法。。。

#3


1.返回XML
2.返回表值参数
3.将记录插入其他表/全局临时表
再想想其他的办法

#4


数据中转喽

#5


直接调用时必须用参数来传递,而不能接收记录集,如果实在不想改被调过程,那只有在前台先调用过程并形成表,然后再执行调用过程.

#6


返回参数!!!

#7


用返回值标记返回值的含义不行吗??

#8


写个 procC代替procB 返回的内容包装成xml 或者 字符串
然后procA再去调用procC 解析procC的返回值。
直接procA调用 procB行不通的

#9


把procB改成两个表值函数呢

#10


procB 
insert into #1
select * from table1 where .............
insert into #2
select * from table2 where .............
reutrn

procA
create #1
create #2
exec procB
select * from #1 
select * from #2
drop table #1 
drop table #2

----?

#11


楼主可以考虑用VB或C#等实现。创建一个dataset,通过dataadaptor执行procB然后fill到dataset中,在dataset中应该会产生两张datatable,分别为table0和table1。很久以前实现过,现在记不太清具体过程了。

#12


改成表量函数 存储过程中就可以使用了。

#13


这种需求sql没有办法实现

#14


php100视频教程

#15


procA返回的二個表,如果結構是一樣的,是可以的

如下:
1.

create proc sp_procA
as

select '1' as a,'2' as b

select 'a' as a,'b' as b


2.

create proc sp_procB
as

create table #aa(a char(1),b char(2))

insert into #aa
exec ('sp_procA')

select * from #aa




3.執行:
exec sp_procB

#16


procA返回的二個表,如果結構是一樣的,是可以的

如下:
1.

create proc sp_procA
as

select '1' as a,'2' as b

select 'a' as a,'b' as b


2.

create proc sp_procB
as

create table #aa(a char(1),b char(2))

insert into #aa
exec ('sp_procA')

select * from #aa




3.執行:
exec sp_procB

#17


存储过程的语句一般较为复杂,所以使用多语句表值函数。或者在存储过程中将要使用的表直接写到物理表中,当然这种方法在并发时比较危险。

#1


没办法的

#2


不改木办法。。。

#3


1.返回XML
2.返回表值参数
3.将记录插入其他表/全局临时表
再想想其他的办法

#4


数据中转喽

#5


直接调用时必须用参数来传递,而不能接收记录集,如果实在不想改被调过程,那只有在前台先调用过程并形成表,然后再执行调用过程.

#6


返回参数!!!

#7


用返回值标记返回值的含义不行吗??

#8


写个 procC代替procB 返回的内容包装成xml 或者 字符串
然后procA再去调用procC 解析procC的返回值。
直接procA调用 procB行不通的

#9


把procB改成两个表值函数呢

#10


procB 
insert into #1
select * from table1 where .............
insert into #2
select * from table2 where .............
reutrn

procA
create #1
create #2
exec procB
select * from #1 
select * from #2
drop table #1 
drop table #2

----?

#11


楼主可以考虑用VB或C#等实现。创建一个dataset,通过dataadaptor执行procB然后fill到dataset中,在dataset中应该会产生两张datatable,分别为table0和table1。很久以前实现过,现在记不太清具体过程了。

#12


改成表量函数 存储过程中就可以使用了。

#13


这种需求sql没有办法实现

#14


php100视频教程

#15


procA返回的二個表,如果結構是一樣的,是可以的

如下:
1.

create proc sp_procA
as

select '1' as a,'2' as b

select 'a' as a,'b' as b


2.

create proc sp_procB
as

create table #aa(a char(1),b char(2))

insert into #aa
exec ('sp_procA')

select * from #aa




3.執行:
exec sp_procB

#16


procA返回的二個表,如果結構是一樣的,是可以的

如下:
1.

create proc sp_procA
as

select '1' as a,'2' as b

select 'a' as a,'b' as b


2.

create proc sp_procB
as

create table #aa(a char(1),b char(2))

insert into #aa
exec ('sp_procA')

select * from #aa




3.執行:
exec sp_procB

#17


存储过程的语句一般较为复杂,所以使用多语句表值函数。或者在存储过程中将要使用的表直接写到物理表中,当然这种方法在并发时比较危险。