(转)PostgreSQL 兼容Oracle - orafce

转自:http://blog.163.com/digoal@126/blog/static/1638770402015112144250486/

PostgreSQL是和Oracle最接近的企业数据库,包括数据类型,功能,架构和语法等几个方面。甚至大多数的日常应用的性能也不会输给Oracle。 但是Oracle有些函数或者包,默认PostgreSQL是没有的,需要安装orafce包来实现这些兼容性。 例如现在orafce已经包含了如下内容。
1. 类型 date, varchar2 and nvarchar2 2. 函数 concat, nvl, nvl2, lnnvl, decode, bitand, nanvl, sinh, cosh, tanh and oracle.substr 3. dual 表 4. package : dbms_output utl_file dbms_pipe dbms_alert PLVdate PLVstr and PLVchr PLVsubst DBMS_utility PLVlex DBMS_ASSERT PLUnit DBMS_random orafce的安装步骤如下: http://pgxn.org/dist/orafce/ 下载最新版本。 wget http://api.pgxn.org/dist/orafce/3.1.2/orafce-3.1.2.zip 安装 unzip orafce-3.1.2.zip mv orafce-3.1.2 /opt/soft_bak/postgresql-9.4.5/contrib cd /opt/soft_bak/postgresql-9.4.5/contrib/orafce-3.1.2 把pg_config命令放到当前路径,之后就可以编译安装。 export PATH=/opt/pgsql/bin:$PATH make clean make make install 创建extension 。 su - postgres psql postgres=# create extension orafce; CREATE EXTENSION Oracle兼容 函数列表: postgres=# \df List of functions Schema | Name | Result data type | Argument data types | Type --------+---------------------+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------- public | bitand | bigint | bigint, bigint | normal public | cosh | double precision | double precision | normal public | decode | bigint | anyelement, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, anyelement, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, anyelement, bigint, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, anyelement, bigint, bigint | normal public | decode | bigint | anyelement, anyelement, bigint, bigint | normal public | decode | character | anyelement, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, anyelement, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, anyelement, character, character | normal public | decode | character | anyelement, anyelement, character, anyelement, character, character | normal public | decode | character | anyelement, anyelement, character, character | normal public | decode | date | anyelement, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, anyelement, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, anyelement, date, date | normal public | decode | date | anyelement, anyelement, date, anyelement, date, date | normal public | decode | date | anyelement, anyelement, date, date | normal public | decode | integer | anyelement, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, anyelement, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, anyelement, integer, integer | normal public | decode | integer | anyelement, anyelement, integer, anyelement, integer, integer | normal public | decode | integer | anyelement, anyelement, integer, integer | normal public | decode | numeric | anyelement, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, anyelement, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, anyelement, numeric, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, anyelement, numeric, numeric | normal public | decode | numeric | anyelement, anyelement, numeric, numeric | normal public | decode | text | anyelement, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, anyelement, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, anyelement, text, text | normal public | decode | text | anyelement, anyelement, text, anyelement, text, text | normal public | decode | text | anyelement, anyelement, text, text | normal public | decode | time without time zone | anyelement, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, anyelement, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, anyelement, time without time zone, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, anyelement, time without time zone, time without time zone | normal public | decode | time without time zone | anyelement, anyelement, time without time zone, time without time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, anyelement, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp with time zone | anyelement, anyelement, timestamp with time zone, timestamp with time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, anyelement, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, anyelement, timestamp without time zone, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, anyelement, timestamp without time zone, timestamp without time zone | normal public | decode | timestamp without time zone | anyelement, anyelement, timestamp without time zone, timestamp without time zone | normal public | dump | character varying | "any" | normal public | dump | character varying | "any", integer | normal public | dump | character varying | text | normal public | dump | character varying | text, integer | normal public | nanvl | double precision | double precision, character varying | normal public | nanvl | double precision | double precision, double precision | normal public | nanvl | numeric | numeric, character varying | normal public | nanvl | numeric | numeric, numeric | normal public | nanvl | real | real, character varying | normal public | nanvl | real | real, real | normal public | nvarchar2 | nvarchar2 | nvarchar2, integer, boolean | normal public | nvarchar2_transform | internal | internal | normal public | nvarchar2in | nvarchar2 | cstring, oid, integer | normal public | nvarchar2out | cstring | nvarchar2 | normal public | nvarchar2recv | nvarchar2 | internal, oid, integer | normal public | nvarchar2send | bytea | nvarchar2 | normal public | nvarchar2typmodin | integer | cstring[] | normal public | nvarchar2typmodout | cstring | integer | normal public | nvl | anyelement | anyelement, anyelement | normal public | nvl2 | anyelement | anyelement, anyelement, anyelement | normal public | sinh | double precision | double precision | normal public | tanh | double precision | double precision | normal public | to_multi_byte | text | str text | normal public | to_single_byte | text | str text | normal public | varchar2 | varchar2 | varchar2, integer, boolean | normal public | varchar2_transform | internal | internal | normal public | varchar2in | varchar2 | cstring, oid, integer | normal public | varchar2out | cstring | varchar2 | normal public | varchar2recv | varchar2 | internal, oid, integer | normal public | varchar2send | bytea | varchar2 | normal public | varchar2typmodin | integer | cstring[] | normal public | varchar2typmodout | cstring | integer | normal (88 rows) Oracle兼容 dual表,在PG里用了一个视图来实现。 postgres=# \dv List of relations Schema | Name | Type | Owner --------+------+------+---------- public | dual | view | postgres (1 row) postgres=# \d+ dual View "public.dual" Column | Type | Modifiers | Storage | Description --------+-------------------+-----------+----------+------------- dummy | character varying | | extended | View definition: SELECT 'X'::character varying AS dummy; postgres=# select * from dual; dummy ------- X (1 row) postgres=# select 1 from dual; ?column? ---------- 1 (1 row) Oracle兼容 包列表: 在PostgreSQL里用schema+函数来实现。 postgres=# \dn List of schemas Name | Owner --------------+---------- dbms_alert | postgres dbms_assert | postgres dbms_output | postgres dbms_pipe | postgres dbms_random | postgres dbms_utility | postgres madlib | postgres oracle | postgres plunit | postgres plvchr | postgres plvdate | postgres plvlex | postgres plvstr | postgres plvsubst | postgres public | postgres utl_file | postgres (16 rows) 例如dbms_alert包: postgres=# \df dbms_alert.* List of functions Schema | Name | Result data type | Argument data types | Type ------------+----------------+------------------+-------------------------------------------------------------------------------+--------- dbms_alert | _signal | void | name text, message text | normal dbms_alert | defered_signal | trigger | | trigger dbms_alert | register | void | name text | normal dbms_alert | remove | void | name text | normal dbms_alert | removeall | void | | normal dbms_alert | set_defaults | void | sensitivity double precision | normal dbms_alert | signal | void | _event text, _message text | normal dbms_alert | waitany | record | OUT name text, OUT message text, OUT status integer, timeout double precision | normal dbms_alert | waitone | record | name text, OUT message text, OUT status integer, timeout double precision | normal (9 rows)

 

转载于:https://www.cnblogs.com/space-place/p/5378930.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值