繁体   English   中英

Oracle 从 package 中的 function 返回表

[英]Oracle return table from function in package

如何在不使用 Z1791A97A8403730EE9276A4 的情况下从 sql package function 返回表?

我通常喜欢用 package 中的所有对象来实现流水线 function。

这是结果查询:

select *
from table(pkg_example_pipeline.F_PIPELINE_EXEMPLE(0));

package:

create or replace PACKAGE pkg_example_pipeline IS

-- *********** TYPES
TYPE TYPE_EXEMPLE is record (
    id                      NUMBER(10,0),
    name                    VARCHAR2(100),
    date_test               DATE
);

TYPE v_table_exemple is table of TYPE_EXEMPLE;
-- *********** 

-- *********** PIPELINE FUNCTIONS
FUNCTION F_PIPELINE_EXEMPLE (pId NUMBER)
RETURN v_table_exemple  pipelined;

END; --PACKAGE SPEC
/

create or replace PACKAGE BODY pkg_example_pipeline
IS
-- ***********  CURSORs 
/**
* Just if you need 
**/

CURSOR cr_exemple
IS
 SELECT 0 id, 'name' name, sysdate date_test 
 from dual;

-- ***********  

-- *********** PIPELINE FUNCTIONS
--POSICAO DIARIA
FUNCTION F_PIPELINE_EXEMPLE (pId NUMBER)
RETURN v_table_exemple  pipelined
IS                  
    row_exemple TYPE_EXEMPLE;

BEGIN

   FOR reg_exemple IN  (SELECT 0 id, 'name' name, sysdate date_test from dual) LOOP
        BEGIN
            row_exemple.id        := reg_exemple.id;
            row_exemple.name      := reg_exemple.name;
            row_exemple.date_test := reg_exemple.date_test;

            pipe row (row_exemple);

        EXCEPTION
        WHEN others THEN
            dbms_output.put_line('error: ' || sqlerrm);
            row_exemple.name := 'error: ' || sqlerrm;
            pipe row (row_exemple);
        END;

   END LOOP;



EXCEPTION
WHEN others THEN
     ROLLBACK;
END;

-- *********** 
END; --PKG BOBY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM