所谓动态引擎,就是说比如有很多张表的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 → found

%NOTFOUND → not found

%ISOPEN → pgsql不支持

%ROWCOUNT → pgsql不支持

另外关于cursor的其他差异,参照这个帖子

http://bbs.pgsqldb.com/client/post_show.php?zt_auto_bh=56751

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、序列使用方式不一致。

pg 与 oracle 比较的更多相关文章

  1. 一文详解TDSQL PG版Oracle兼容性实践

    TDSQL PG版分布式关系型数据库,是一款同时面向在线事务交易和MPP实时数据分析的高性能HTAP数据库系统.面对应用业务产生的不定性数据爆炸需求,不管是高并发交易还是海量实时数据分析,TDSQL ...

  2. PG TO Oracle 增量同步-外部表

    背景 最近在负责公司数据Oracle转PG:老平台数据库:Oracle11g:新平台数据库:PostgreSQL12.由于平台统计规则有变动:所以正在推广的游戏数据无法全部迁移过来:只能在老平台上运行 ...

  3. 使用zfs进行pg的pitr恢复测试

    前段时间做了一下zfs做pg的增量恢复测试,mark一下. 服务器信息: 主机:192.168.173.43 备机:192.168.173.41 主备使用流复制搭建,在备机上面进行了zfs快照备份. ...

  4. 数据库groub by分组后,把多行数据合并成一行数据(Oracle、Postgres)

    关键字 row_number() over (partition by)   例如,下面的数据, 这是按照name分组后,展示property值. 我们想得到这样的值; 第一步:将每一组的proper ...

  5. 数据库多表连接方式介绍-HASH-JOIN

    1.概述 hash join是一种数据库在进行多表连接时的处理算法,对于多表连接还有两种比较常用的方式:sort merge-join 和 nested loop. 为了比较清楚的介绍hash joi ...

  6. sql差异

    类别 MS SQL Server My SQL PG SQL Oracle Access  自增  identity(1,1) auto_increment ALTER TABLE 'tableNam ...

  7. MySQL优化小结

    数据库的配置是基础.SQL优化最重要(贯穿始终,每日必做),由图可知,越往上优化的面越小,最基本的SQL优化是最重要的,往上各个参数也没太多调的,也不可能说调一个innodb参数性能就会好多少,而动不 ...

  8. Linux HugePage 特性

    HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage,以及HugePage的一些特性. ...

  9. aix 常用命令

    官网上的介绍: AIX 常用命令汇总 http://www.ibm.com/developerworks/cn/aix/library/au-dutta_cmds.html 我们先SSH 到AIX 系 ...

随机推荐

  1. UVa 10791 - Minimum Sum LCM(唯一分解定理)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. Centos 安装libevent

    1.在http://libevent.org/下载libevent-2.1.8-stable.tar.gz 2.解压缩 tar -zxvf libevent-2.1.8-stable.tar.gz c ...

  3. ecshop 名词

    分单:一个订单生成发货单后就会显示已分单,部分发货就会显示部分分单 待发货:已确认已付款未发货 待支付:已分单,未付款,已发货 未确认:未确认,未付款,未发货 已成交:已分单,已付款,已发货 订单状态 ...

  4. 理解JavaScript变量值

    JavaScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值是指那些可能由多个值构成的对象. 在将一个值赋给变量时,解析器必须确定这个值是基 ...

  5. python查看微信消息撤回

    准备环境 python语言环境 python解释器-pycharm itchat介绍 itchat是一个开源的微信个人号接口,通过itchat可以实现微信(好友或微信群)的信息处理,包括文本.图片.小 ...

  6. 点击HTML页面问号出现提示框

    本demo的功能:点击页面按钮在其边缘出现提示信息,点击页面任何一处则消失. 如下图: 1.所需插件: jquery插件: layer插件: 2.HTML内容: ==注意==: class=" ...

  7. 【2017002】C#FTP上传文件

    //上传文件 public static Boolean FtpUpload(string ftpPath, string localFile, FtpServer svr) { //检查目录是否存在 ...

  8. Paxos一致性算法(三)

    一.概述: Google Chubby的作者说过这个世界只有一种一致性算法,那就Paxos算法,其他的都是残次品. 二.Paxos算法: 一种基于消息传递的高度容错性的一致性算法. Paxos:少数服 ...

  9. 转:system.Security.Cryptography C# 加密和解密

    以下文转自: http://www.360doc.com/content/13/0122/05/19147_261678471.shtml 总结:注册的时候经过MD5加密存进数据库,在登录的时候需要先 ...

  10. Oracle 触发器(一)

    1)触发器是一种特殊的存储过程,触发器一般由事件触发并且不能接受参数,存储器由语句块去调用:触发器是当某个事件发生时自动地隐式运行. 2)触发器分类: 1.DML触发器: 创建在表上,由DML事件引发 ...