一 概述:
3、关键字PIPELINED表明这是一个Oracle管道函数,oracle管道函数的返回值类型必须为集合,在函数中,PIPE ROW语句被用来返回该集合的单个元
素,函数以一个空的RETURN 语句结束,以表明它已经完成。
4、由于管道函数的并发多管道流式设计以及实时返回查询结果而去除了中间环节因此可以带来可观的性能提升。
二、如何编写管道函数:
例1:
- @H_404_74@CREATE@H_404_74@OR@H_404_74@REPLACE@H_404_74@PACKAGEBODYpkg1AS@H_404_74@
- @H_404_74@FUNCTION@H_404_74@f1(xNUMBER)RETURN@H_404_74@numset_tPIPELINEDIS@H_404_74@
- @H_404_74@BEGIN@H_404_74@
- @H_404_74@FOR@H_404_74@iIN@H_404_74@1..xLOOP
- @H_404_74@PIPEROW(i);
- @H_404_74@END@H_404_74@LOOP;
- @H_404_74@RETURN@H_404_74@;
- @H_404_74@END@H_404_74@;
- @H_404_74@END@H_404_74@pkg1;
------------------------
1
2
3
4
5
三 管道函数用于数据转换:
- @H_404_74@CREATE@H_404_74@OR@H_404_74@REPLACE@H_404_74@PACKAGErefcur_pkgIS@H_404_74@
- @H_404_74@TYPErefcur_tIS@H_404_74@REFCURSOR@H_404_74@RETURN@H_404_74@emp%ROWTYPE;
- @H_404_74@TYPEoutrec_typIS@H_404_74@RECORD(
- @H_404_74@var_numNUMBER(6),
- @H_404_74@var_char1VARCHAR2(30),
- @H_404_74@var_char2VARCHAR2(30));
- @H_404_74@TYPEoutrecsetIS@H_404_74@TABLE@H_404_74@OF@H_404_74@outrec_typ;
- @H_404_74@FUNCTION@H_404_74@f_trans(prefcur_t)
- @H_404_74@RETURN@H_404_74@outrecsetPIPELINED;
- @H_404_74@END@H_404_74@refcur_pkg;
- @H_404_74@CREATE@H_404_74@OR@H_404_74@REPLACE@H_404_74@PACKAGEBODYrefcur_pkgIS@H_404_74@
- @H_404_74@FUNCTION@H_404_74@f_trans(prefcur_t)
- @H_404_74@RETURN@H_404_74@outrecsetPIPELINEDIS@H_404_74@
- @H_404_74@out_recoutrec_typ;
- @H_404_74@in_recp%ROWTYPE;
- @H_404_74@BEGIN@H_404_74@
- @H_404_74@LOOP
- @H_404_74@FETCH@H_404_74@pINTO@H_404_74@in_rec;
- @H_404_74@EXITWHEN@H_404_74@p%NOTFOUND;
- @H_404_74@--firstrow@H_404_74@
- @H_404_74@out_rec.var_num:=in_rec.empno;
- @H_404_74@out_rec.var_char1:=in_rec.ename;
- @H_404_74@out_rec.var_char2:=in_rec.mgr;
- @H_404_74@PIPEROW(out_rec);
- @H_404_74@--secondrow@H_404_74@
- @H_404_74@out_rec.var_num:=in_rec.deptno;
- @H_404_74@out_rec.var_char1:=in_rec.deptno;
- @H_404_74@out_rec.var_char2:=in_rec.job;
- @H_404_74@PIPEROW(out_rec);
- @H_404_74@END@H_404_74@LOOP;
- @H_404_74@CLOSE@H_404_74@p;
- @H_404_74@RETURN@H_404_74@;
- @H_404_74@END@H_404_74@;
- @H_404_74@END@H_404_74@refcur_pkg;
VAR_NUM VAR_CHAR1 VAR_CHAR2
---------- ------------------------------ ------------------------------
7782 CLARK 7839
10 10 MANAGER
---------------------------------------
By Dylan.