Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

24.Программирование сервера баз данныхoracle посредством pl/sql

В своей исходной форме SQL не был полноценным языком программирования. Он задумывался и создавался как язык, предназначенный для выполнения операций над базами данных – создания их структуры, ввода и обновления данных – и особенно для выполнения запросов. SQL может использоваться как интерактивный командный язык: пользователь по очереди вводит инструкции SQL с клавиатуры, а СУБД их выполняет. В этом случае последовательность операций над базой данных определяется ее пользователем.

С появлением хранимых процедур и триггеров язык SQL обогатился рядом дополнительных базовых возможностей, обеспечиваемых практически всеми языками программирования, что позволило писать на “расширенном SQL” настоящие программы и процедуры. (Хранимые процедуры позволяют переносить часть прикладных функций, связанных с обработкой данных, в саму базу данных, триггеры служат для автоматического выполнения хранимых процедур при возникновении в базе данных определенных условий.)

Набор элементов, реализующих возможности процедурного языка, составляет язык хранимых процедур (SPL — Stored Procedure Language).

PL/SQL — процедурный язык программирования, встроенный в большинство продуктов ORACLE. С помощью PL/SQL можно создавать программы, в которых объединяются операторы PL/SQL, предназначенные для управления выполнением программ, и SQL-операторы, с помощью которых можно обращаться к базам данных и обрабатывать информацию. Ниже приведен пример очень простой программы на языке PL/SQL, с помощью которой обновляется цена единицы продукции, когда известен идентификационный номер этой единицы.

procedure update_part_unitprice (part_id in integer, new_price in number)

is

invalid_part exception;

begin

-- UPDATE – ОПЕРАТОР ДЛЯ ОБНОВЛЕНИЯ ЗАПИСИ В БАЗЕ ДАННЫХ

update sales.parts

set unit_price = new_price

where id = part_id;

-- ОПЕРАТОР ДЛЯ ПРОВЕРКИ ОШИБОК

if sql %notfound then

raise invalid_part;

endif;

exception

-- ПОДПРОГРАММА ОБРАБОТКИ ИСКЛЮЧИТЕЛЬНОЙ СИТУАЦИИ

when invalid_part then

raise_application_error(-20000, ‘Invalid Part ID’);

end update_part_unitprice;

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

PL/SQL – это процедурный язык, очень похожий на язык программирования Ada. В PL/SQL имеются операторы, дающие возможность объявлять переменные и константы, управлять выполнением программы, определять данные и манипулировать ими, а также выполнять многие другие функции.

24.1.Блоки

Программа PL/SQL структурируется при помощи отдельных блоков, в которых группируются связанные объявления и операторы. Каждый блок программы PL/SQL имеет специальное назначение и решает определенную задачу. Следовательно, программу PL/SQL можно организовать таким образом, чтобы ее легче было понять.

Блок PL/SQL может включать три раздела: объявления, тело основной программы и обработчики исключительных ситуаций.

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

• В теле основной программы содержатся исполняемые операторы блока. Другими словами, тело – это часть блока PL/SQL, в которой определяются его функциональные возможности.

• В разделе исключительных ситуаций находятся обработчики исключительных ситуаций, т.е. подпрограммы обработки ошибок. Когда оператор в теле блока определяет исключительную ситуацию (обнаруживает ошибку), он передает управление программой обработчику соответствующей исключительной ситуации, находящемуся в разделе обработчиков исключительных ситуаций.

Таким образом, структуру блока PL/SQL можно представить в следующем виде:

declare

/*раздел объявлений (переменные, типы, курсоры и др.)*/

begin

/*Основной раздел блока, называемый выполняемым. Содержит процедурные и SQL – операторы*/

exception

/*Раздел обработки исключительных ситуаций. Содержит операторы обработки ошибок*/

end;

Вообще говоря, обязательным в блоке является только выполняемый раздел, кроме того, он должен содержать, по крайней мере, один выполняемый оператор.

Программы PL/SQL не ограничены одним блоком. Для лучшей организации выполнения подзадач в программе PL/SQL можно создать вложенные блоки в теле программы и в разделе исключительных ситуаций блока. Вообще говоря, объявления блока видны всем операторам тела блока и раздела обработки исключительных ситуаций, в том числе и операторам “вложенных подблоков”.