pg与oracle⽐较
所谓动态引擎,就是说⽐如有很多张表的Join,原始的做法是⼀开始就⽣成好这个执⾏计划,随后执⾏,但实际上很多表Join的时候,你⼀开始⽣成的那个执⾏计划很有可能是不对的。
那么动态执⾏计划就是指它可以边执⾏边帮助搜集最准确的执⾏信息,从⽽调整后⾯的执⾏计划
ORACLE语法→ PostgreSQL语法
1、VARCHAR2 → varchar
2、DATE → timestamp
3、SYSDATE → localtimestamp
4、Oracle中''和NULL是相同的,但pgsql是不同的,所以需要将''修改成NULL
5、字符串连接符 ||
Oracle: 'a'||null 结果是'a'
pgsql: 'a'||null 结果是null
所以⽤concat()函数替代
6、trunc(时间) → date_trunc()
7、to_char, to_number, to_date pgsql都需要指定格式
8、DECODE → case
9、NVL → coalesce()
10、外连接(+) → left(right) join
11、GOTO语句→ pgsql不⽀持
12、pgsql不⽀持procedure和package,都需要改写成function
当package有全局变量的情况修改起来⽐较⿇烦,我们是⽤临时表传递的。
13、cursor的属性
%FOUND → foundoracle trunc函数的使用方法
%NOTFOUND → not found
%ISOPEN → pgsql不⽀持
%ROWCOUNT → pgsql不⽀持
另外关于cursor的其他差异,参照这个帖⼦
14、COMMIT,ROLLBACK;SAVEPOINT → pgsql不⽀持
15、Oracle的系统包,例如 DBMS_OUTPUT,DBMS_SQL,UTIL_FILE,UTIL_MAIL → pgsql不⽀持
16、异常处理⽅法不同
17、trigger的语法不同
18、⽇期的加减计算语法不同。
1、oracle没有继承和重载特性,pgsql⽀持继承和函数重载;
2、2、oracle中的空字符串等同于null,pgsql中是分开处理的;
3、3、oracle不⽀持boolean类型,可以⽤integer型代替
4、4、pgsql中 :: 为类型转换,oracle中不具有;
5、5、oracle中可以使⽤rownum分页,pgsql使⽤limit;
6、6、pgsql中,查询语句from⼦句中,表名后可以加 as 别名,oracle中表名后不允许出现as ;
7、7、pgsql⼦查询要求严格,必须具有别名才可以;
8、8、序列使⽤⽅式不⼀致。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论