2010-08-11 106 views

回答

1

这是DB2表函数的类比,但没有指定列列表。

E.g.类似的东西:

create function do_some_stuff() returns table(<column_list>) 
language sql 
begin atomic 

    return 
    select t.* from some_table t; 

[email protected] 

没有<column_list>规范。 这些函数可能会根据传入参数和内部逻辑的不同字段返回表。 在大多数情况下,这种类型的函数结果用于将结果返回给客户端。

基于REF_CURSOR的声明类型是在Oracle 8上执行此类操作的唯一方法,但由于Oracle 9i内置了sys_refcursor类型(例如请参阅here)。

由于声明是弱类型的,DB2(据我所知)没有模拟sys_refcursor,所以自动转换不能决定如何转换这种声明。

转换它的唯一方法是查看存储过程并手动重建游标中返回的字段集。然后你可以用强类型的光标重写Oracle声明并用MTK处理它。或手动重写逻辑上的DB2副......


更新:

  1. DB2支持弱类型游标。
  2. 解决IBM书中描述的迁移兼容性问题,可用here(警告:.PDF文件大约3.18MB)。在这里搜索“ref_cursor”字符串。
+0

谢谢。你似乎暗示MTK将能够处理强类型的游标。那是对的吗? – 2010-08-11 12:44:55

+0

对不起,但我没有足够的DB2经验,但对于有关MTK功能的问题得到了一些答案 - 查看答案更新。 – ThinkJet 2010-08-11 15:04:11