0

我必须使用返回的现有存储过程REF CURSOR。我需要将其插入resultset到临时表中。

程序规范是:

TYPE cur IS REF CURSOR;
PROCEDURE get(p_one NUMBER ,p_two OUT cur);

如何resultset将此过程的插入表中。

4

1 回答 1

0

我刚刚重新阅读了您的问题的标题。您真的需要能够从程序中进行选择吗?

如果是这样,这可以通过使用流水线函数来实现。

这个过程是:

  1. 创建一个对象类型来表示您需要的记录类型。
  2. 创建对象的嵌套表类型。
  3. 创建一个返回嵌套表的流水线函数。
  4. 然后,您可以从此功能中进行选择。

这个例子应该让你上路:

    create or replace type to_test as object (
        val1  varchar2(32),
        val2  varchar2(32)
    );

    create or replace type tt_test as table of to_test;

    create or replace function demo_pipe return tt_test pipelined       
    is
       v_test to_test;
    begin
       for rec in (select * from user_tables) loop

           v_test := to_test(rec.table_name, rec.tablespace_name);

           pipe row (v_test);

       end loop;   

    end;
    /
    select * from table(demo_pipe);
于 2014-11-04T00:45:24.497 回答