Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Л-5 - Процедурные расширения SQL

.pdf
Скачиваний:
13
Добавлен:
28.06.2021
Размер:
592.42 Кб
Скачать

Ключевые элементы процедурных расширений

Переменные и операции присваивания.

Модульность, процедуры и блочные структуры.

Передача параметров в вызываемую процедуру и их возвращение в вызывающий модуль.

Условное выполнение.

Циклическое выполнение.

Курсоры.

Обработка ошибок.

Язык PL/SQL

Фирменный процедурно-ориентированный ЯП СУБД Oracle, встроенный в Oracle XE. С его помощью можно писать программы, включающие:

процедуры PL/SQL;

команды языка SQL для доступа к БД Oracle.

Похож на язык программирования Ada, многие процедурные конструкции совпадают.

Оптимизирован для тесного взаимодействия с СУБД

Oracle.

Блоки программы PL/SQL

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

Базовый блок PL/SQL состоит из четырех разделов:

раздел заголовка;

раздел объявлений (необязателен);

выполняемый раздел;

раздел исключений (необязателен).

Анонимный блок

Анонимный блок – блок PL/SQL без раздела заголовка. Анонимные блоки могут выполняться из SQL*Plus, использоваться в функциях, процедурах и триггерах.

Основы языка PL/SQL можно изучать путем выполнения анонимных блоков в Oracle SQL Developer.

Анонимный блок не хранится постоянно в БД Oracle.

Приложение просто отправляет блок на сервер БД для обработки его в режиме выполнения.

Структура анонимного блока

DECLARE

-- раздел объявлений (необязателен)

BEGIN

-- тело программы (обязательно)

EXCEPTION

-- обработчики ошибок (необязательны)

END;

Пример анонимного блока (1)

SET SERVEROUTPUT ON;

DECLARE

Num_a NUMBER := 6;

Num_b NUMBER;

BEGIN

Num_b := 0;

Num_a := Num_a / Num_b ;

Num_b := 7;

dbms_output .put_line ( ' Значение Num_b ' || Num_b) ;

Пример анонимного блока (2)

EXCEPTION

WHEN ZERO_DIVIDE THEN

dbms_output.put_line ( 'Попытка деления на ноль'); dbms_output.put_line ( ' Значение Num_a ' || Num_a) ; dbms_output.put_line ( ' Значение Num_b ' || Num_b) ;

END;

/

Простой запрос SELECT

в MS SQL Server

Простой запрос SELECT в Oracle (1)

Простой запрос SELECT в Oracle (2)