Oracle中的管道函数(pipeline)迁移到MogDB

Oracle中的管道函数(pipeline)迁移到MogDB

原作者:师庆栋

适用范围

Oracle迁移到MogDB

问题概述

迁移一个项目时发现客户的系统中大量的使用了管道函数(pipeline),MogDB目前暂时不支持pipeline。如果迁移为表函数,使用时并不支持函数table(),改动较大。但是MogDB已经支持talbe函数,只要返回数据集即可。因此可以把oracle中的管道函数进行改造,改为返回数据集。

Oracle中源码示例

解释CREATE OR REPLACE TYPE type_emp_row AS OBJECT ( empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) ) / CREATE OR REPLACE TYPE type_emp IS TABLE OF type_emp_row; / CREATE OR REPLACE FUNCTION f_get_emp(p_deptno NUMBER) RETURN type_emp PIPELINED AS v_emp type_emp_row; BEGIN FOR cur IN (SELECT * FROM scott.emp WHERE deptno = p_deptno) LOOP v_emp := type_emp_row(cur.empno, cur.ename, cur.job, cur.mgr, cur.hiredate, cur.sal, cur.comm, cur.deptno); PIPE ROW(v_emp); END LOOP; END;