所谓动态引擎,就是说比如有很多张表的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. 在.Net项目中使用Redis作为缓存服务

    转自:http://www.cnblogs.com/hohoa/p/5771255.html 最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写 ...

  2. 【转】Android开发:shape和selector和layer-list的(详细说明)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...

  3. 第三章.搭建MyBatis工程环境

    1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...

  4. CPP-基础:信号量

    windows api 多线程---信号量 信号量(Semaphore)和互斥量一样,属于内核对象.它自动执行可用资源查询的测试,如果有可用资源,则可用资源的计数减少1,从而避免其它线程请求资源.当该 ...

  5. 使用@AspectJ注解开发Spring AOP

    一.实体类: Role public class Role { private int id; private String roleName; private String note; @Overr ...

  6. ffmpeg 从mp4上提取H264的nalu

    转自http://blog.csdn.net/gavinr/article/details/7183499 1.获取数据 ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储 ...

  7. python3 基于tcp 简单client和server

    客户端代码 from socket import * #客户端 client=socket(AF_INET,SOCK_STREAM) #通讯地址 client.connect(('172.18.100 ...

  8. ios之runtime

    简介 OC是从C语言发展过来的, 之所以能变为动态语言是因为runtime机制, runtime就是OC在运行时的一些机制: OC的runtime最重要的是消息机制. 在编译阶段,OC可以调用任意函数 ...

  9. iOS视频倒放

    iOS视频倒放 视频的倒放就是视频从后往前播放,这个只适应于视频图像,对声音来说倒放只是噪音,没什么意义,所以倒放的时候声音都是去除的. 倒放实现 一般对H264编码的视频进行解码,都是从头至尾进行的 ...

  10. iOS之iOS中的(null)、<null>、 nil 的问题

      摘要: 你有没有过这样的经历,就是界面上显示出类似<null>.(null)这样一些东西,有时候还会莫名其妙的闪退.反反复复真是曰了犬,今天来总结一下这个问题的解决方法 前段时间开发过 ...