Oracle 转化成Postgre主要注意的点
标示符(Identifiers)
Oracle 转化标示符为大写字母,除了引号
Postgre 转化标示符为小写字母,除了引号
Oracle:
SELECT COUNT (*) FROM user_tables WHERE table_name=UPPER (tableName);
Postgre:
SELECT COUNT (*) FROM pg_tables WHERE tablename =LOWER (tableName);
- 数据类型转化。(如下表一)
表一数据库Oracle与 Postgre之间数据类型的转化
对于序列的访问
说明:user_id_seq代表已创建的序列,以便下边举例应用。
Oracle:序列名.nextval、序列名.currval。
如:user_id_seq.nextval、user_id_seq.currval
Postgre:nextval(‘序列名’)、currval(‘序列名’)。
如:nextval(‘user_id_seq’)、currval(‘user_id_seq’)
取到相应的序列值:
Oracle: select 序列名.nextval/序列名.currval from dual;
如:select user_id_seq.nextval from dual;
Postgre: select nextval(‘序列名’)/currval(‘序列名’);
如:select nextval(‘序列号’);
用于递归的sql语句
Oracle: startwith…connect by prior…
Postgre:with recursive…
编写函数或存储过程中出现的逻辑代码转化 (Oracle —> Postgre)
a.return 变成 returns
b.execute immediate 变成 execute
c.Oracle中的存储过程、函数变成 Postgres中的函数
其他的替换(Oracle —> Postgre)
a.sysdate —->NOW()
b. nvl(expression1, expression2) —->coalesce(expression1, expression2)
其他替换说明
说明:sd为Oracle数据库中创建的一个用户,方便下边举例。
1. sql语句中涉及如“用户名.表名”形式的全部把“用户名.”去掉。
如:sd.table_name(oracle数据库)修改为 table_name(postgres数据库)
- postgre数据库中存在的表中未填写如character或varchar等类型属性的内容。若通过sql语句读取时,取到的不是空字符串“”,而是null
原文:https://blog.csdn.net/u011480030/article/details/12789645