通常我们会在oracle中用dbms_output输出调试信息,但dbms_output只能在调用过程完成才返回结果,不能实时输出的。这意味着通常我们经常要等几分钟或更长的时间才能看到调试信息,那怎么才能实现实时输出呢?
如果想实时输出可以通过写表或者写日志的方式进行,和pipe row管道输出的方法。
下面为大家介绍管道输出
管道输出可以通过复杂的处理最终得到一个结果集,然后通过pipelined返回
--CREATE OR REPLACE TYPE myObjectFormat AS OBJECT ( A INT, B DATE, C VARCHAR2(25));
-- --声明一个列类型myObjectFormat
--CREATE OR REPLACE TYPE myTableType AS TABLE OF myObjectFormat;
--声明一个表类型 myTableType
create or replace FUNCTION prodFunc
RETURN myTableType
PIPELINED
IS
BEGIN
FOR i in 1 .. 5
LOOP
PIPE ROW (myObjectFormat(i,SYSDATE+i,'Row '||i));
END LOOP;
RETURN;
END;
--SELECT * FROM TABLE(prodFunc);
--执行函数,结果如下: