Лекции / Л-5 - Процедурные расширения SQL
.pdfКлючевые элементы процедурных расширений
Переменные и операции присваивания.
Модульность, процедуры и блочные структуры.
Передача параметров в вызываемую процедуру и их возвращение в вызывающий модуль.
Условное выполнение.
Циклическое выполнение.
Курсоры.
Обработка ошибок.
Язык 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)