Object-PL/SQL

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Object-PL / SQL (объектно-процедурный язык / структурированный язык запросов или просто O-PL / SQL) является методологией использования процедурного языка расширения Oracle для SQL и реляционной базы данных Oracle.[1] Дополнительные возможности из версии 7 и другие улучшения приводят к одной из широкомасштабных реализаций среды объектно-ориентированной парадигмы базы данных.[2]

Несмотря на то, что общий синтаксис PL / SQL, ранее использовался для того, чтобы иметь сходство с Ada или Pascal, в нём было много улучшений, которые в основном включают код внедрения Java[3] и объектно-ориентированный синтаксис[4] внутри SQL.

Смешивание и внедрение триггеров и хранимых процедур было одним из прорывных пунктов, чтобы поддержать использование PL / SQL в ОО парадигме. Включение в синтаксис SQL таких операторов, как [класс]. [объект] и реализация типа объекта(как и любой ОО язык), завершило минимальные требования к отображению подхода на расширенном языке SQL без использования специфического отображаемого программного обеспечения.

Автономия, известность и важность O-PL / SQL[править | править код]

O-PSL / SQL - это не просто использование версии языка программирования, а определение того, как его использовать, и это определяет автономию предмета.[5] Каждая версия PL / SQL, начиная с 7, приносит так много инноваций, что невозможно рассматривать такие употребления как подтемы PL / SQL. Настолько велика эта революция, что она устанавливает реальную границу между языком, который можно использовать как раньше, и подход ООП внутри себя. Именно этот подход делает тему важной, и широкомасштабное использование принесло свою известность.

Путаница объектов[править | править код]

Может возникнуть путаница в понятиях объекта СУБД и объекта класса. Это очень важно, поскольку мы живем с обоими значениями на одном языке. Необходимо определить, когда документация относится к объекту как одно из двух определений.

Объекты базы данных - это концепции, которые относятся к реляционным или последовательным базам данных и сохраняются в новых моделях. Таблицы, триггеры, столбцы, индексы являются примерами объектов базы данных , которые присутствуют в O-PL / SQL, но с тем же значением понятия объектов Java, в частности, элементом набора, который существует, начиная с экземпляра класса.

PL/SQL[править | править код]

Основная статья: PL/SQL

PL / SQL - это расширенный язык SQL, используемый Oracle Database.

PL / SQL доступен в Oracle Database (начиная с версии 7), в базе данных TimesTen (начиная с версии 11.2.1) и IBM DB2 (начиная с версии 9.7).[6]

O-PL / SQL позволяет определять классы и создавать их как объекты, создавая определяемые пользователем типы данных как конструкторы записи, помимо использования Java в хранимых процедурах и триггерах.

Примеры использования синтаксиса O-PL/SQL[править | править код]

Вот небольшой набор примеров синтаксиса O-PL / SQL, извлеченный из официальной документации[7] и других источников:

Простой пример объектно-ориентированного PL / SQL[8]

create or replace type base_type as object (
  a number,
  constructor function base_type return self as result,
  member function  func return number,
  member procedure proc (n number)
) instantiable not final;

Теперь реализация типа создана. Реализация определяет, как ведут себя функции типа, процедуры и явный конструктор :

create or replace type body base_type as
  constructor function base_type return self as result is
  begin
    a:=0;
    return;
  end base_type;

  member function func return number is
  begin
    return a;
  end func;

  member procedure proc (n number) as
  begin
    a:=n;
  end proc;
end;

Мы готовы вывести base_type. Ключевое слово для вывода — ниже. Производный тип определяет новый атрибут (названный m) и переопределяет func.

create or replace type deriv_type under base_type (
  m number,
  overriding member function func return number
);

Как и в случае с базовыми типами, переопределенные методы в производном типе должны быть реализованы:

create or replace type body deriv_type as
  overriding member function func return number is
  begin
    return m*a;
  end;
end;
/

Созданные типы могут быть созданы и методы могут быть вызваны:

declare
  b1 base_type :=base_type();
  b2 base_type :=base_type(4);
  d1 deriv_type:=deriv_type(5,6);
  d2 deriv_type:=deriv_type(5,6);
begin
  dbms_output.put_line(b1.func);
  dbms_output.put_line(b2.func);

  d1.proc(4);
  dbms_output.put_line(d1.func);
  dbms_output.put_line(d2.func);
end;

Результат:

0
4
24
30

Созданные типы стали реальными типами и могут использоваться в таблицах:

create table table_base (
  b base_type
);
declare
  base  base_type := base_type();
  deriv deriv_type:= deriv_type(8,9);
begin
  insert into table_base values(base);
  insert into table_base values(deriv);
end;
/
select t.b.func() from table_base t;

Результат:

0
72
select avg(t.b.func()) from table_base t;

Результат:

36

См. также[править | править код]

Библиография[править | править код]

  • Bennett, Mathew (2002). Programming Oracle Developer (1 ed.). Indianapolis: Sams. p. 348. ISBN 0672321106.
  • Bales, Donals (2007). PL/SQL from Novice to Professional (1 ed.). New York: Apress. p. 469. ISBN 1590598822.
  • Feuerstein, Steven; Pribyl, Bill (2009). "26". Oracle PL/SQL Programming. Sebastopol: O'Reilly Media, Inc. ISBN 9780596514464.
  • Rahayu, Wenny; taniar, David; Pardede, Eric (2006). Object-Oriented Oracle (PDF). Hershey: IRM Press. p. 345. ISBN 1591406080.

Источники[править | править код]

Эта статья частично или полностью была взята из статьи Википедии, озаглавленной «Object-PL / SQL».

Ссылки[править | править код]

  1. Lassan, Alan R., Due, Jacob Steen (13 June 2000). "Experiences with Object Oriented Development in PL/SQL". — The danish National Center for IT Research., 15 April 2012.
  2. Cunningham, Lewis. "PL/SQL Features by Release". — Burleson Consulting, Retrieved 15 April 2012.
  3. "When Should you use Java Stored Procedures with an Oracle Database, what are the Drawbacks?". Stack Overflow.
  4. "Oracle's Object-Oriented Features". etutorial.org (16 April 2012).
  5. "Use Object PL/SQL". java2s.com (19 April 2012).
  6. "DB2 10: Run Oracle applications on DB2 10 for Linux, UNIX, and Windows". IBM (20 April 2012).
  7. "Oracle Documentation". Oracle (19 April 2012).
  8. "Object Oriented Oracle, example 1". René Nyffenegger's collection of things on the web (19 April 2012).

Внешние источники[править | править код]