首页 新闻 会员 周边

MS SQL Server在存储过程怎样保存另一个存储过程的多个结果集

1
[待解决问题]

存储过程A返回三个结果集,在存储工程B里边怎么把这三个结果集存起来啊?一个我知道怎么弄,三个就不知道了

少司命&的主页 少司命& | 菜鸟二级 | 园豆:204
提问于:2019-06-03 18:30
< >
分享
所有回答(2)
0

要不试试,创建三个临时表,然后调用另外一个存储过程的时候查出来?或者你已经知道如何搞一个,数据组装组装将三个合并到一个里边?

maxradish | 园豆:222 (菜鸟二级) | 2019-06-03 20:07

insert into #t (a,b)
exec pr_b 120,188
一个表的是这样,三个不能这样吧,实在不行我就去改存储过程了

支持(0) 反对(0) 少司命& | 园豆:204 (菜鸟二级) | 2019-06-04 08:44

@少司命&:
没搞过这样的要求,但是应该可以用下边这种方法弄吧,或者研究一下 proc的 output?
1、先创建3个临时表
2、创建存储过程A,在A里边将值分别查到3个临时表
3、创建存储过程B,在B里边调用A,
不知道这样可不可以,没试过,

支持(0) 反对(0) maxradish | 园豆:222 (菜鸟二级) | 2019-06-04 09:10

@maxradish: 我已经在改旧存储过程了,把三个结果放到一个临时表

支持(0) 反对(0) 少司命& | 园豆:204 (菜鸟二级) | 2019-06-04 09:36

@少司命&:
Exec 虽然能查出来3个结果集,但是好像没法解。想了四种方法解决这样的问题。
1、在B存储过程中先建3张全局临时表T1,T2,T3,然后调用A存储过程,在A存储过程内将3个结果集分别装到T1,T2,T3,调用完毕,回B存储过程查。
2、在B存储过程中建1张临时表T1,列名公用或者就累加,多加一个type的字段,表明是结果集1、结果集2、结果集3,返回后在A存储过程里用Type字段判断来自哪个结果集。
3、在B存储过程中查到3个结果集后,将其转换成字符串,用output传回A存储过程去。
4、多次调用存储过程,利用标记来确定返回哪个集合。

据说output能返回table类型,但是我试验了下,好像不行。

支持(0) 反对(0) maxradish | 园豆:222 (菜鸟二级) | 2019-06-04 16:37
0

我怎么感觉你是把业务逻辑要放到存储过程来实现呢?
个人建议,不要这样干,你这样会增加数据库服务器的负担
最好是业务逻辑在程序中去处理,数库库只是存取数据

程序员修炼之旅 | 园豆:776 (小虾三级) | 2019-06-04 09:32

没有业务逻辑,就是个统计,把结果放到物理表里

支持(0) 反对(0) 少司命& | 园豆:204 (菜鸟二级) | 2019-06-04 09:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册