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

经验分享 程序员 微信小程序 职场和发展