588

Sybase存储过程间数据共享

2015.05.17 评论(2) 166次

一、问题

开发项目时,会把常用的存储过程公用,但是都是在程序中调用存储过程。这周遇到一个问题,需要在存储过程中调用另一个存储过程,并得到其返回的结果集。

例如,现在有一存储过程A:

现在需要写一个B存储过程,要调用A,然后取得A过程的结果,然后在把最终的结果返回。

方案:

A存储过程:查询完数据后直接返回结果。

B存储过程:需要调用A存储过程,得到其结果,然后加工,把终的结果返回客户端。

问题:B存储过程怎么获得A存储过程的结果呢?

二、思路

咱们可以使用临时表,B存储过程在调用之前创建一个临时表,用来A存储过程调用后将结果INSERT到临时表中,等A执行完成后,B存储过程就可以取到临时表中的数据了。

看上去很有道理,咱们来实现一下。

三、解决

根据上面的思路,可以改写A过程为:


我们新建一个存储过程B:

此时,调用存储过程B,就可以得到存储过程A中的数据了,以达到数据共享。

但是这样会引出一个问题,以前调用A存储过程的程序会报错,因为没有#TEST_B表。

咱们需要改一下A存储过程,在调用时判断一下,有没有相应的临时表,如果存在,则把结果插入临时表,如果不存在,则把数据直接返回客户端。

A存储过程改写如下:

可以看到,在A存储过程中,咱们加上了一个判断,判断当前会话中是否存在所需的临时表,如果存在,就执行插入语句,这里是直接调用的EXEC命令,可以避免在创建A存储过程不成功的情况。
如果不存在临时表,则直接返回结果信息。这样就达到了A存储过程公用的目的。

完:本文共747字
标签: , ,
  • 本文标题:Sybase存储过程间数据共享
  • 本文地址:http://www.jialeens.com/archives/588.html
  • 本站文章除注明转载外,均为本站原创或编译
  • 欢迎任何形式的转载,但请务必以链接形式注明出处,请尊重他人劳动成果
  • 本作品采用 [知识共享署名3.0] 进行许可
相关文章:
2条评论
评论 (2)
相关 (0)
  • 还没有Trackback
发表评论
icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif