Oracle Pipe解決實時輸出問題

壹頁書發表於2013-11-07
如果在程式執行中,需要輸出進度等相關資訊,可以使用Oracle提供的Pipe功能。

首先,建立一個Type。

 create or replace type msg as table of varchar2(20)
 /

然後,建立函式

create or replace function display (v_count in integer)
return msg PIPELINED
as
begin
        for x in 1..v_count loop
            
pipe row(x);
            
DBMS_LOCK.sleep(1);
        end loop;
end;
/

這個例子需要DBMS_LOCK的許可權,如果沒有許可權,可以使用DBA賬號進行授權。
grant execute on dbms_lock to lihuilin;

Sqlplus中執行:
set arraysize 1;
select * from table(display(10));
即可看到執行結果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-776047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章