PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

8 Neue Oracle-Kompatibilitätsfunktionen in EnterpriseDB PPAS 9.2 Beta

Einige der neuen Oracle-Funktionen, die in PostgresPlus Advanced Server 9.2 Beta enthalten sind. Die meisten von ihnen sind für das Produkt attraktiv und werden benötigt, wenn jemand von Oracle zu PostgreSQL migriert ist. Viele weitere neue Funktionen im Produkt selbst, aber ich möchte einige davon kurz erläutern, die sich auf die Oracle-Kompatibilität beziehen.

1. Objekttypunterstützung: In dieser Version werden Member-Funktionen unterstützt, aber noch keine MAP-Member-Funktionen.

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. Pl/SQL-Untertypen: Jetzt können wir eigene Untertypen im deklarativen Teil jedes PL/SQL-Blocks, -Unterprogramms oder -Pakets definieren.

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. DROP TABLE CASCADE EINSCHRÄNKUNGEN: Diese Option löscht alle Fremdschlüsseleinschränkungen, die auf die zu löschende Tabelle verweisen, und löscht dann die Tabelle.

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 in Paketdefinition:

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. Funktionsaufruf TABLE() für verschachtelte Tabellen: Ein TABLE() ermöglicht es, eine Sammlung in der FROM-Klausel wie eine Tabelle abzufragen.

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 des UDT im Funktionsaufruf: Die Funktionen udtabletype_in und udtabletype_out werden jetzt für verschachtelte Tabellen unterstützt.

7. Verwendung für reservierte Keywords (LOG/CURRENT_DATE): Jetzt kann das LOG-Wort zum Benennen der Funktion verwendet werden. Auch CURRENT_DATE, kann für Variablennamen verwendet werden.

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. Unterstützung des Datentyps STRING /NVARCHAR2: Jetzt wird der Datentyp STRING und NVARCHAR2 für Multibyte-Daten für die Tabellenspalte unterstützt. Zeichenfolge mit Alias ​​auf VARCHAR2 und NVARCHAR2 wird auf varchar von PPAS-Datentypen abgebildet.

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 |

Link für Download- und Versionshinweise:
http://www.enterprisedb.com/products-services-training/products/postgres-plus-advanced-server/downloads