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

8 Nuevas funciones de compatibilidad con Oracle en EnterpriseDB PPAS 9.2 Beta

Algunas de las nuevas características de Oracle incluidas en PostgresPlus Advanced Server 9.2 beta. La mayoría de ellos son atractivos para el producto y necesarios si alguien ha migrado de Oracle a PostgreSQL. Hay muchas más funciones nuevas en el producto en sí, sin embargo, me gustaría repasar algunas de ellas que están relacionadas con la compatibilidad con Oracle.

1. Soporte de tipo de objeto: En esta versión, se admiten las funciones miembro, pero aún no las funciones miembro MAP.

create or replace type mf_test as object
(
name varchar2(30),
member function disp return varchar2
);
create or replace type body mf_test as
member function disp return varchar2 is
begin
return 'Name : '||name;
end;
end;
edb=# declare
edb-# v_mf mf_test;
edb$# begin
edb$# v_mf := mf_test('Raghavendra');
edb$# dbms_output.put_line(v_mf.disp());
edb$# end;
Name : Raghavendra

EDB-SPL Procedure successfully completed

2. Subtipos Pl/SQL: Ahora podemos definir subtipos propios en la parte declarativa de cualquier bloque, subprograma o paquete PL/SQL.

Syntax: SUBTYPE subtype_name IS base_type[(constraint)] [NOT NULL];

declare
subtype hiredate is date not null;
pfdate hiredate := sysdate;
begin
dbms_output.put_line(pfdate);
end;
06-OCT-12 19:53:44

EDB-SPL Procedure successfully completed

3. RESTRICCIONES EN CASCADA DE DROP TABLE: Esta opción eliminará todas las restricciones de clave externa que hacen referencia a la tabla que se descartará y luego eliminará la tabla.

edb=# create table master(id int primary key);
edb=# create table master1(id int references master(id));
edb=# d master1
Table "enterprisedb.master1"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
Foreign-key constraints:
"master1_id_fkey" FOREIGN KEY (id) REFERENCES master(id)

edb=# drop table master cascade constraints;
NOTICE: drop cascades to constraint master1_id_fkey on table master1
DROP TABLE
edb=# d master1
Table "enterprisedb.master1"
Column | Type | Modifiers
--------+---------+-----------
id | integer |

4. TIPO en la definición del paquete:

create or replace package t_pack as 
type ftype is record(name varchar2(20));
end;
edb=# call t_pack.ftype('EDB');
ftype
-------
(EDB)
(1 row)

5. Llamada a la función TABLE() en tablas anidadas: Una TABLE() permite consultar una colección en la cláusula FROM como una tabla.

CREATE OR REPLACE TYPE string_a IS TABLE OF VARCHAR2(765);
select * from table(string_a('abc','xyz')) ;
column_value
--------------
abc
xyz
(2 rows)

6. ENTRADA/SALIDA de UDT en llamada de función: Las funciones udtabletype_in y udtabletype_out ahora son compatibles con tablas anidadas.

7. Uso en palabras clave reservadas (LOG/CURRENT_DATE): Ahora la palabra LOG se puede usar para nombrar la función. También se puede usar CURRENT_DATE para nombres de variables.

edb=# create or replace function log(t text) return text as 
begin
return t;
end;

edb=# select log('EDB');
log
-----
EDB
(1 row)

edb=# declare
edb-# current_date date := '07-OCT-2012';
edb$# begin
edb$# dbms_output.put_line(current_date);
edb$# end;
07-OCT-12 00:00:00

EDB-SPL Procedure successfully completed

8. Soporte de tipo de datos STRING /NVARCHAR2: Ahora se admite el tipo de datos STRING y NVARCHAR2 para datos de varios bytes para la columna de la tabla. Cadena con alias de VARCHAR2 y NVARCHAR2 se asigna a varchar de tipos de datos PPAS.

edb=# create table dtype( a string, b nvarchar2);
CREATE TABLE
edb=# d dtype
Table "enterprisedb.dtype"
Column | Type | Modifiers
--------+-------------------+-----------
a | character varying |
b | character varying |

Enlace de descarga y notas de la versión:
http://www.enterprisedb.com/products-services-training/products/postgres-plus-advanced-server/downloads