PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

8 Nouvelles fonctionnalités de compatibilité Oracle dans EnterpriseDB PPAS 9.2 Beta

Certaines des nouvelles fonctionnalités Oracle incluses dans la version bêta de PostgresPlus Advanced Server 9.2. La plupart d'entre eux sont un charme pour le produit et sont nécessaires si quelqu'un a migré d'Oracle vers PostgreSQL. Beaucoup plus de nouvelles fonctionnalités dans le produit lui-même, mais j'aimerais en parcourir quelques-unes qui sont liées à la compatibilité Oracle.

1. Prise en charge du type d'objet : Dans cette version, les fonctions membres sont prises en charge, mais pas encore les fonctions membres 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. Sous-types Pl/SQL : Nous pouvons maintenant définir nos propres sous-types dans la partie déclarative de n'importe quel bloc, sous-programme ou package 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. CONTRAINTES EN CASCADE DE LA TABLE : Cette option supprimera toutes les contraintes de clé étrangère faisant référence à la table à supprimer, puis supprimera la table.

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. TYPE dans la définition du package :

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. Appel de la fonction TABLE() sur les tables imbriquées : Une TABLE() permet d'interroger une collection dans la clause FROM comme une table.

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. IN/OUT de l'UDT dans l'appel de fonction : Les fonctions udtabletype_in et udtabletype_out sont désormais prises en charge pour les tables imbriquées.

7. Utilisation sur les mots-clés réservés (LOG/CURRENT_DATE) : Maintenant, le mot LOG peut être utilisé pour nommer la fonction. Également CURRENT_DATE, peut être utilisé pour les noms 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. Prise en charge du type de données STRING /NVARCHAR2 : Désormais, le type de données STRING et NVARCHAR2 pour les données multi-octets sont pris en charge pour la colonne de table. La chaîne aliasée vers VARCHAR2 et NVARCHAR2 correspond au varchar des types de données 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 |

Lien de téléchargement et notes de version :
http://www.enterprisedb.com/products-services-training/products/postgres-plus-advanced-server/downloads