[DB2]关于临时表不能跨存储过程使用的问题请教。

[复制链接]
查看11 | 回复9 | 2007-9-26 17:05:46 | 显示全部楼层 |阅读模式
由于将Oracle的存储过程移植到db2。
在oracle中使用到了数组,从找的资料看,对于oracle的数组需要使用db2的临时表代替。
但是这些数组,是被存储过程A建立的,然后作为参数传入到了存储过程B,然后又传入了存储过程C。每个都进行了一些修改,并在下一步中使用。
我在db2使用临时表时,发现对于session.临时表的访问和操作,都必须在同一个存储过程中完成。这样就导致了我将存储过程A、B、C都必须合到一个存储过程中。后果就是db2告诉我过程太长了。
请问高手,改如何解决这个临时表不能跨存储过程的问题呢?谢谢!
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
不能,临时表是属于当前session的!
oracle的数组你是指什么?type?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
我指的oracle是例如TYPE ARRAY_FLAG IS VARRAY(200) OF BOOLEAN;
这个玩意儿,然后在存储过程之间,声明了ARRAY_FLAG类型的参数传入传出。
那只能在一个存储过程中搞,现在又太长,那如何是好,如何是好。
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
db2也有type啊!而且很复杂的!有点类似java的类,只间还有继承呢!
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
有type的,很烦的
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
多谢两位的回答。
db2和oracle的确都是有Type来自定义新的类型。
可对于TYPE ARRAY_FLAG IS VARRAY(200) OF BOOLEAN;他关键是定义的是一个VARRAY(200) 数组。
对于这种数组,在db2中又没有这种使用方法,那就只能通过临时表绕。然后就绕出来了我遇到的问题了。临时表只能在一个存储过程里面搞。
真不知道还有没有其他的路子来实现这种对应的方法。
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
db2 存储过程的限制的确很多,是不是可以考虑采用实际表来做?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
对处理效率还是有些要求,因此实际表还是不太能考虑。并且上层业务代码涉及到多线程。不太好弄实际表搞。
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
最初由 cxlseu 发布
[B]多谢两位的回答。
db2和oracle的确都是有Type来自定义新的类型。
可对于TYPE ARRAY_FLAG IS VARRAY(200) OF BOOLEAN;他关键是定义的是一个VARRAY(200) 数组。
对于这种数组,在db2中又没有这种使用方法,那就只能通过临时表绕。然后就绕出来了我遇到的问题了。临时表只能在一个存储过程里面搞。
真不知道还有没有其他的路子来实现这种对应的方法。 [/B]


IS VARRAY(200) OF BOOLEAN 和is table of boolean又有多大区别呢?我是说代码改动量?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
用实体表来传一下,未必效率会低很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行