论坛首页 综合技术论坛

oracle中嵌套表做为输出参数处理方法

浏览 2035 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-11   最后修改:2011-06-22
当在过程中使用嵌套表做为输出参数时,需要利用table()函数转为游标,进行输出。且此时的嵌套表必须是schema级别,否则无法调用table()函数。

如下:

CREATE OR REPLACE TYPE OBJ AS OBJECT(
ID   NUMBER,
NAME VARCHAR2(10)
);

CREATE OR REPLACE TYPE NESTED_TABLE_TYP AS TABLE OF OBJ;

--在过程中如下:
record  OBJ;
records NESTED_TABLE_TYP;

CURSOR my_cursor IS
   SELECT OBJ(ID,NAME) --SELECT的时候必须调用初始化函数把每行数据变成对象
     FROM TABLE1;
BEGIN
     OPEN my_cursor;
     FETCH my_cursor BULK COLLECT records; --这样是可以的。
     --然后对records进行一系列操作
     --返回的时候,就是这样的
     OPEN my_cursor FOR SELECT * FROM TABLE(CAST(records AS NESTED_TABLE_TYP));
END;


但如果嵌套表是在过程中定义的,如下:
TYPE NESTED_TABLE_TYP IS TABLE OF TABLE_1%ROWTYPE;
record  TABLE_1%ROWTYPE;
records NESTED_TABLE_TYP;

BEGIN
---一系列操作后,得出records,这时,records是无法使用表函数的,所以得出的嵌套表无法做为结果集输出。
END;


论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics