PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

8 Нови функции за съвместимост на Oracle в EnterpriseDB PPAS 9.2 Beta

Някои от новите функции на Oracle, включени в PostgresPlus Advanced Server 9.2 beta. Повечето от тях са очарователни за продукта и са необходими, ако някой е мигрирал от Oracle към PostgreSQL. Още много нови функции в самия продукт, но бих искал да разгледам някои от тях, които са свързани със съвместимостта с Oracle.

1. Поддръжка на типа на обекта: В тази версия се поддържат функции-членове, но все още не и функции-членове на 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. Pl/SQL подтипове : Сега можем да дефинираме собствени подтипове в декларативната част на всеки 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. КАСКАДНИ ОГРАНИЧЕНИЯ НА КАСКАДНАТА ТАБЛИЦА: Тази опция ще изтрие всички ограничения на външния ключ, които препращат към таблицата, която ще бъде отхвърлена, и след това ще премахне таблицата.

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 в дефиниция на пакета:

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. Извикване на функция TABLE() на вложени таблици: TABLE() дава възможност за запитване на колекция в клаузата FROM като таблица.

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 от UDT при извикване на функция: Функциите udtabletype_in и udtabletype_out вече се поддържат за вложени таблици.

7. Използване на запазени ключови думи (LOG/CURRENT_DATE): Сега думата LOG може да се използва за именуване на функцията. Също CURRENT_DATE може да се използва за имена на променливи.

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. Поддръжка на тип данни STRING /NVARCHAR2: Сега STRING тип данни и NVARCHAR2 за многобайтови данни се поддържат за колона на таблицата. Низ с псевдоним на VARCHAR2 и NVARCHAR2 се преобразува във varchar на 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 |

Връзка за изтегляне и освобождаване на бележки:
http://www.enterprisedb.com/products-services-training/products/postgres-plus-advanced-server/downloads


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. не може да създаде автоматично инкрементиращ първичен ключ с flask-sqlalchemy

  2. Функция за динамична заявка на Postgres

  3. PGEast, хардуерен сравнителен анализ и PG Performance Farm

  4. pgpredict – Предсказуем анализ в PostgreSQL

  5. IS NOT NULL тестът за запис не връща TRUE, когато е зададена променлива