sql >> Base de Datos >  >> RDS >> PostgreSQL

Nuevas funciones de compatibilidad con Oracle en PostgresPlus Advanced Server 9.3Beta

En resumen, sobre el producto EnterpriseDB PostgresPlus Advanced Server, se basa en la versión de la comunidad de PostgreSQL con funciones de compatibilidad con Oracle y su capacidad para ejecutarse con aplicaciones Oracle existentes sin necesidad de volver a codificar (por lo general, se requiere en la migración) y permite a las empresas disfrutar del beneficio de Open base de datos fuente con PostgresPlus Advanced Server.

Dado que PostgresPlus Advanced Server 9.3 Beta se basó en la característica comunitaria de PostgreSQL 9.3 Beta, se desatan diversas características de compatibilidad con Oracle introducidas en BETA, como sintaxis estilo Oracle, paquetes, función SQL, etc. A continuación, se muestran algunos de los ejemplos ejecutados en PPAS 9.3 BETA:

Sintaxis de vistas materializadas:

CREATE MATERIALIZED VIEW name [build_clause][create_mv_refresh] AS subquery
Where build_clause is:
BUILD {IMMEDIATE | DEFERRED}
Where create_mv_refresh is:
REFRESH [COMPLETE] [ON DEMAND]

  • Construir en diferido – En esta opción, los datos no se completan en MV en el momento de la creación, sino que se completan más tarde usando REFRESH MATERIALIZED VIEW.
  • Construir inmediatamente – En esta opción, los datos se completan en MV en el momento de la creación de las tablas (predeterminado)

edb=# create materialized view mymview1 
build immediate
as select ename,sum(sal) from emp group by ename;
SELECT 14
edb=# create materialized view mymview2
build deferred
as select ename,sum(sal) from emp group by ename;
SELECT 0

Como podrá deducir de la salida anterior, "CONSTRUIR INMEDIATAMENTE" completa todas las filas en el momento de la creación, mientras que "CONSTRUIR DIFERIDO" simplemente creó un objeto ficticio que debería completarse más tarde con REFRESH MATERIALIZED VIEW.

edb=# refresh materialized view mymview2 ;
REFRESH MATERIALIZED VIEW
edb=# select count(*) from mymview2;
count
-------
14
(1 row)

Los modos REFRESH [COMPLETE] [ON DEMAND] también son compatibles en el momento de la creación de la vista materializada.

Compatibilidad con más funciones Oracle SQL:
REGEXP_SUBSTR()

edb=# SELECT REGEXP_SUBSTR('EDB documentation AT http://www.enterprisedb.com/','http://([[:alnum:]]+){3,4}/?') as RESULT FROM dual;
result
------------
http://www
(1 row)

REGEXP_COUNT()

edb=# select regexp_count('I am in PG-Mailing list','i',1,'i');
regexp_count
--------------
5
(1 row)

REGEXP_INSTR()

edb=# SELECT REGEXP_INSTR('PostgreSQL','P') "position" FROM dual;
position
----------
1
(1 row)

RAWTOHEX() / HEXTORAW ()

edb=# CREATE TABLE test (raw_col RAW(10));
CREATE TABLE
edb=# INSERT INTO test VALUES (HEXTORAW('7D'));
INSERT 0 1
edb=# select * from test ;
raw_col
---------
x7d
(1 row)

edb=# select rawtohex(raw_col) from test ;
rawtohex
----------
7d
(1 row)

Más soporte de Oracle Packages:

DBMS_SCHEDULER
DBMS_RANDOM
DBMS_CRYPTO
DBMS_MVIEW
DBMS_LOCK.sleep
UTL_HTTP
UTL_ENCODE
UTL_URL

Para obtener más detalles, puede consultar las notas de la versión:
http://get.enterprisedb.com/releasenotes/PgPlus_AS_93Beta1_Release_Notes_20130802.pdf