Oracle存储过程进入视图

时间:2017-06-12 19:55:18

标签: sql oracle stored-procedures

我在oracle中有一个SP,在我查询创建一个viewn之前返回一个游标,但由于我需要的数据的复杂性,获得它的更好的选择是SP,但我严格需要查看信息(客户端的要求),但现在我不知道如何在视图中放置/转换数据(光标),我正在检查全局临时表,但这意味着我需要在访问视图之前调用SP,那是不可能的。我必须使用select,select * from view_data_sp调用访问视图,显然性能不受影响。

我知道如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

考虑使用记录类型,记录表和管道行。像这样的东西可以解决这个问题吗?

CREATE OR REPLACE package sysop as
  type file_list_rec is record(filename varchar2(1024));
  type file_list is table of file_list_rec;

  function ls(v_directory varchar2) return file_list pipelined;
end;
/

CREATE OR REPLACE package body sysop as
  function ls(v_directory varchar2) return file_list pipelined is
    rec file_list_rec;
    v_host_list varchar2(32000) := '';
  begin
    v_host_list := host_list(v_directory);

    for file in (
      select regexp_substr(v_host_list, '[^'||chr(10)||']+', 1, level)
        from dual
          connect by
            regexp_substr(v_host_list, '[^'||chr(10)||']+', 1, level) is not null)
      loop
        pipe row (file);
      end loop;
     return;
  end ls;
end sysop;
/