Oracle存储过程视图

fcy6dtqo  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(115)

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

3phpmpom

3phpmpom1#

考虑使用记录类型、记录表和管道行。像这样的东西会有用吗?

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;
/

相关问题