存储过程A返回三个结果集,在存储工程B里边怎么把这三个结果集存起来啊?一个我知道怎么弄,三个就不知道了
要不试试,创建三个临时表,然后调用另外一个存储过程的时候查出来?或者你已经知道如何搞一个,数据组装组装将三个合并到一个里边?
insert into #t (a,b)
exec pr_b 120,188
一个表的是这样,三个不能这样吧,实在不行我就去改存储过程了
@少司命&:
没搞过这样的要求,但是应该可以用下边这种方法弄吧,或者研究一下 proc的 output?
1、先创建3个临时表
2、创建存储过程A,在A里边将值分别查到3个临时表
3、创建存储过程B,在B里边调用A,
不知道这样可不可以,没试过,
@maxradish: 我已经在改旧存储过程了,把三个结果放到一个临时表
@少司命&:
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类型,但是我试验了下,好像不行。
我怎么感觉你是把业务逻辑要放到存储过程来实现呢?
个人建议,不要这样干,你这样会增加数据库服务器的负担
最好是业务逻辑在程序中去处理,数库库只是存取数据
没有业务逻辑,就是个统计,把结果放到物理表里