背景
Oracle PL/SQL是非常强大的一门SQL编程语言,许多Oracle用户也使用它来处理一些要求延迟低且数据一致性或可靠性要求很高的业务逻辑。
PostgreSQL也有一门非常高级的内置SQL编程语言,plpgsql。与Oracle PL/SQL语法极其类似,但是还是有一些不一样的地方。
(PS:除了plpgsql,PostgreSQL还支持C,java,python,perl等流行的语言作为数据库的函数编程语言)
本文是针对有Oracle用户遇到的一些函数语法与PostgreSQL不兼容的地方,给出的修改建议。
涉及type xx is table of xxxx index by binary_integer语法、type xx is record语法。
Oracle PL/SQL 例子
CREATE OR REPLACE FUNCTION f_xml(p_xml CLOB) RETURN INT
AS
...
type rec_tk is record
(
tkno VARCHAR2(100) ,
cg_zdj number(12,0) := 0 ,
cg_jsf number(12,0) := 0
);
type tklist is table of rec_tk index by binary_integer;
type rec_cjr is record
(
cjrid varchar2(30) ,
tk tklist
);
type cjr is table of rec_cjr index by binary_integer;
p_cjrs cjr;
FOR j IN 0..v_nllen-1 LOOP
BEGIN
...
p_cjrs(j).cjrid := v_nodevalue;
...
p_cjrs(j).tk(v_t