从函数中获取动态返回引用游标的行

时间:2012-03-05 11:54:09

标签: plsql oracle11g

CREATE OR REPLACE PACKAGE abc
IS
 TYPE abc_cur IS REF CURSOR;

 FUNCTION TEST
  RETURN abc_cur;
 END;
/    

CREATE OR REPLACE PACKAGE BODY abc
IS
FUNCTION TEST
RETURN abc_cur
IS
v_select   VARCHAR2(2000);
 BEGIN
 v_select                   := 'Select a1,a2 from pqr';
 OPEN abc_cur FOR v_select;
 RETURN abc_cur;
 END TEST;
END abc;

这是我创建的虚拟包,在函数test select中是动态的,意味着数据列的变化。现在我的问题是,当我从任何其他过程或函数调用此函数时,我得到引用游标,如果我不知道它动态返回哪一列,我该如何从该游标中获取数据?

1 个答案:

答案 0 :(得分:1)

如果a1和a2是动态的,在运行时更改 - 您可以考虑使用dbms_sql而不是refcursor。 Here是如何动态获取行的示例,其中列数及其类型在运行时之前是未知的。您可以根据您的要求进行更改。