zoukankan      html  css  js  c++  java
  • 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 → 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、序列使用方式不一致。

  • 相关阅读:
    i.MX6UL: i.MX 6UltraLite处理器
    温控产品解决方案
    原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展
    camera数字降噪(DNR)
    光刻机技术领地
    晶圆代工解决方案
    Camera噪声问题
    camera中LENS和SENSOR的CRA是如何搭配的?
    Camera Lens Coating
    (转)唐家三少--写书赚钱还是太少了
  • 原文地址:https://www.cnblogs.com/qiuhong10/p/7716281.html
Copyright © 2011-2022 走看看