Объект-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 , а именно элемента набора, существование которого начинается с создания экземпляра класса.
ПЛ/SQL
[ редактировать ]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
См. также
[ редактировать ]- Система управления реляционными базами данных
- Компонентно-ориентированная база данных
- Транзакт-SQL
- Система управления базой данных
Библиография
[ редактировать ]- Беннетт, Мэтью (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 г.
Ссылки
[ редактировать ]- ^ Лассан, Алан Р.; Причитается Джейкобу Стину (13 июня 2000 г.). «Опыт объектно-ориентированной разработки на PL/SQL» (PDF) . Датский национальный центр ИТ-исследований. Архивировано из оригинала (PDF) 24 декабря 2010 года . Проверено 15 апреля 2012 г.
- ^ Центр Для; Аллан Р. Лассен; Джейкоб Стин Дуэ (2000). «Опыт объектно-ориентированной разработки на PL/SQL». CiteSeerX 10.1.1.38.5122 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Каннингем, Льюис. «Функции PL/SQL в зависимости от выпуска» . Берлесон Консалтинг . Проверено 15 апреля 2012 г.
- ^ «Когда следует использовать хранимые процедуры Java с базой данных Oracle, каковы недостатки?» . Переполнение стека . Проверено 15 апреля 2012 г.
- ^ «Объектно-ориентированные возможности Oracle» . http://www.etutorial.org . Проверено 16 апреля 2012 г.
- ^ Беннетт, 2002: 144
- ^ Перейти обратно: а б Шубхо, Аль-Фарук (8 ноября 2009 г.). «Оптимизация файлов базы данных и применение секционирования» . Проект Кодекса . Проверено 19 апреля 2012 г.
- ^ Бэйлс, 2007: 107-209.
- ^ «Использовать объект PL/SQL» . java2s.com . Проверено 19 апреля 2012 г.
- ^ Фейерштейн, 2009 г.
- ^ «DB2 10: запуск приложений Oracle в DB2 10 для Linux, UNIX и Windows» . ИБМ . Проверено 20 апреля 2012 г.
- ^ «Документация Oracle» . Оракул . Проверено 19 апреля 2012 г.
- ^ «Объектно-ориентированный Oracle, пример 1» . Коллекция вещей Рене Ниффенеггера в сети . Проверено 19 апреля 2012 г.
Внешние источники
[ редактировать ]- Примеры O-Pl/SQL
- Другой пример хранимой процедуры на Java, встроенный в документацию Oracle: «Вызов методов Java в базе данных Oracle» . Оракул . Проверено 20 апреля 2012 г.