Procedure从Oracle 转 PostgreSQL 注意如下:
1、SYSDATE -> CURRENT_DATE(字段date型) / CURRENT_TIMESTAMP(字段timestamp型)
2、参数类型:NVARCAHR2 -> VARCHAR
3、SELECT INTO -> SELECT INTO STRICT
4、UPDATE SET的字段有别名 -> UPDATE SET
5、参数类型:NUMBER -> NUMERIC
6、游标定义:Oracle中 FOR xxx IN SELECT结果集作为游标,xxx不用声明;
PostgreSQL中 xxx 要在DECLARE下声明( xxx RECORD; )
7、AS -> AS $body$ DECLARE
8、NCAHR() -> CHAR()
9、Oracle游标定义:CURSOR xxx IS
PostgreSQL游标定义:xxx CURSOR FOR/IS
10、goto e_proc; -> RETURN;
11、PostgreSQL 不要COMMIT
12、NVL() -> COALESCE()
13、码制:shift JIS -> UTF-8
14、最小值函数
Oracle:least( 1, null , 3 ) -> null
PotsgreSQL:least( 1, null, 3) -> 1
15、最大值函数
Oracle:greatest( 1, null , 3 ) -> null
PostgreSQL:greatest( 1, null , 3 ) -> 3
16、执行动态SQL
Oracle:EXECUTE IMMEDIATE Ws_xxsql [ INTO xx变量 ] [ USING xx参数 ];
PostgreSQL:EXECUTE Ws_xxsql::varchar [ INTO STRICT xx变量 ] [ USING xx参数 ];
17、PostgreSQL 不需要 Oracle 的 dual 虚拟表
Oracle:SELECT sum(1) FROM dual; -> 1
PostgreSQL:SELECT sum(1); -> 1