Jump to content

Объект-PL/SQL

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

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

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

Автономность, известность и важность O-PL/SQL

[ редактировать ]

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

Путаница предметов

[ редактировать ]

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

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

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

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

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

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

[ редактировать ]

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

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

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

См. также

[ редактировать ]

Библиография

[ редактировать ]
  • Беннетт, Мэтью (2002). Программирование Oracle Developer (1-е изд.). Индианаполис: Сэмс. п. 348. ИСБН  0672321106 .
  • Бэйлс, Доналс (2007). PL/SQL от новичка до профессионала (1-е изд.). Нью-Йорк: Апресс. п. 469. ИСБН  978-1590598825 .
  • Фейерштейн, Стивен; Прибыл, Билл (2009). «26» . Программирование Oracle PL/SQL . Севастополь: ISBN O'Reilly Media, Inc.  9780596514464 .
  • Мир, Венни; Таниар, Дэвид; Пардеде, Эрик (2006). Объектно-ориентированный оракул (PDF) . Херши: IRM Press. п. 345. ИСБН  1591406080 . Архивировано из оригинала (PDF) 3 марта 2016 г. Проверено 20 апреля 2012 г.
  1. ^ Лассан, Алан Р.; Причитается Джейкобу Стину (13 июня 2000 г.). «Опыт объектно-ориентированной разработки на PL/SQL» (PDF) . Датский национальный центр ИТ-исследований. Архивировано из оригинала (PDF) 24 декабря 2010 года . Проверено 15 апреля 2012 г.
  2. ^ Центр Для; Аллан Р. Лассен; Джейкоб Стин Дуэ (2000). «Опыт объектно-ориентированной разработки на PL/SQL». CiteSeerX   10.1.1.38.5122 . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  3. ^ Каннингем, Льюис. «Функции PL/SQL в зависимости от выпуска» . Берлесон Консалтинг . Проверено 15 апреля 2012 г.
  4. ^ «Когда следует использовать хранимые процедуры Java с базой данных Oracle, каковы недостатки?» . Переполнение стека . Проверено 15 апреля 2012 г.
  5. ^ «Объектно-ориентированные возможности Oracle» . http://www.etutorial.org . Проверено 16 апреля 2012 г.
  6. ^ Беннетт, 2002: 144
  7. ^ Перейти обратно: а б Шубхо, Аль-Фарук (8 ноября 2009 г.). «Оптимизация файлов базы данных и применение секционирования» . Проект Кодекса . Проверено 19 апреля 2012 г.
  8. ^ Бэйлс, 2007: 107-209.
  9. ^ «Использовать объект PL/SQL» . java2s.com . Проверено 19 апреля 2012 г.
  10. ^ Фейерштейн, 2009 г.
  11. ^ «DB2 10: запуск приложений Oracle в DB2 10 для Linux, UNIX и Windows» . ИБМ . Проверено 20 апреля 2012 г.
  12. ^ «Документация Oracle» . Оракул . Проверено 19 апреля 2012 г.
  13. ^ «Объектно-ориентированный Oracle, пример 1» . Коллекция вещей Рене Ниффенеггера в сети . Проверено 19 апреля 2012 г.

Внешние источники

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0c03e0646b08c2e4a3e824e9f7659420__1647799980
URL1:https://arc.ask3.ru/arc/aa/0c/20/0c03e0646b08c2e4a3e824e9f7659420.html
Заголовок, (Title) документа по адресу, URL1:
Object-PL/SQL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)