一个国产数据库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 AS
TYPE 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 AS
FUNCTION get_sum_multiples (
num IN PLS_INTEGER
) RETURN EmpRecTyp
IS
s EmpRecTyp;
BEGIN
select empno,sal into s from emp where empno=num;
RETURN s;
END get_sum_multiples;
procedure p1(arg1 EmpRecTyp ) is
begin
empinfo := arg1;
dbms_output.put_line(empinfo.empno);
end;
procedure p2 is
begin
select 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语法兼容性。这一点无需给客户解释,甲方自己做上几个替换项目自然明白。