一个国产数据库Oracle兼容性测试用例:
-- TestPoint : function return record type
create table emp(empno number,sal number);
insert into emp values(1234,3000);CREATE or replace PACKAGE emp_mgmt ASTYPE EmpRecTyp IS RECORD (empno NUMBER, sal NUMBER);empinfo EmpRecTyp;f1 number :=7521;FUNCTION get_sum_multiples (num IN PLS_INTEGER) RETURN EmpRecTyp;procedure p2;procedure p1(arg1 EmpRecTyp);
END emp_mgmt;
/CREATE or replace PACKAGE BODY emp_mgmt ASFUNCTION get_sum_multiples (num IN PLS_INTEGER) RETURN EmpRecTypISs EmpRecTyp;BEGINselect empno,sal into s from emp where empno=num;RETURN s;END get_sum_multiples;procedure p1(arg1 EmpRecTyp ) isbeginempinfo := arg1;dbms_output.put_line(empinfo.empno);end;procedure p2 isbeginselect empno,sal into empinfo from emp where empno=f1;end;END emp_mgmt;
/-- TestPoint : function return record
begin--dbms_output.serveroutput('t');dbms_output.put_line( emp_mgmt.get_sum_multiples(7521).sal);
end;
/
国产数据库竞争已经白热化,Oracle 兼容性是最重要的考察点。
几年来POC及交付的经验来看,Oracle兼容性做的比较好的国产库寥寥无几,对于传统行业大量的Oracle PL/sql 代码的处理,甲方不可能花费大量人力财力将其改造到应用层去,一个两个核心可以投入人力财力去改造,但几十上百个非核心系统不可能都能有此等待遇的。必然需要替换的国产库有强大的Oracle语法兼容性。这一点无需给客户解释,甲方自己做上几个替换项目自然明白。