Тема 1. Основы языка PL/pgSQL
1.1 Введение в PostgreSQL PL/pgSQL.
Процедурные возможности.
Основные задачи создания программных модулей на стороне сервера.
Преимущества.
Типы программных объектов и их назначение.
Вызов и выполнение программных объектов (интерпретация).
1.2 Блоки
Строковые константы в долларовых кавычках.
Типы блоков.
Структура блоков PL/pgSQL, основные лексические единицы.
Разработка и выполнение анонимных блоков.
Практические занятия.
Разработка и выполнение анонимных блоков.
Тема 2. Переменные и константы
2.1 Переменные и константы.
Назначение переменных и констант.
Правила именования переменных и констант.
Объявление и инициализация переменных и констант в PL/pgSQL.
2.2 Типы данных PL/pgSQL
Скалярные SQL-типы.
Составные типы данных: ROWTYPE, RECORD.
Наследование типов.
2.3 Работа с переменными ROWTYPE
Объявление переменной типа ROWTYPE.
Присвоение значений.
Работа с переменными ROWTYPE.
2.4 Работа с переменными RECORD
Объявление переменной типа RECORD.
Присвоение значений.
Работа с переменными RECORD.
Практические занятия.
Работа с переменными.
Тема 3. Управляющие структуры
3.1 Условные операторы
Использование условных операторов.
Таблицы истинности.
Условный оператор IF.
Условный оператор CASE: Simple case оператор, Searched case оператор.
Выражение CASE.
3.2 Операторы Null и Perform
Назначение и использование оператора Null.
Назначение и использование оператора Perform.
3.3 Циклы
Введение в циклы PL/pgSQL.
Назначение циклов. Типы циклов: безусловный цикл (Loop), цикл с предусловием (While loop), цикл FOR, цикл по элементам массива FOREACH.
3.4 Операторы EXIT и CONTINUE
Назначение и использование операторов EXIT и CONTINUE.
Практические занятия
1. Использование условных операторов.
2. Использование циклов.
Тема 4. Программные модули в БД
4.1 Подпрограммы
Функции и процедуры: назначение, особенности использования.
Создание подпрограмм.
Просмотр кода подпрограммы.
4.2 Параметры подпрограммы
Назначение параметров.
Формальные и фактические параметры.
Режимы параметров.
Описание параметров: тип данных и значение по умолчанию.
Нотации передачи параметров.
4.3 Перегрузка подпрограмм
Перегрузка подпрограмм.
Практические занятия
1. Создание простых подпрограмм.
2. Использование параметров.
3. Перегрузка подпрограмм.
Тема 5. Создание функций и процедур.
5.1 Создание функций
Типы функций: STRICT-функция, скалярная функция, табличная функция.
Оператор накопления строк.
Категории изменчивости.
Создание и удаление функций.
5.2 Создание процедур
Создание процедур.
Использование процедур.
Вызов процедур.
Удаление процедур.
Практические занятия
Создание пользовательских функций и процедур.
Тема 6. Пользовательские сообщения. Обработка исключений
6.1 Ошибки и сообщения PL/pgSQL
Понятие исключений.
Оператор raise - генерация пользовательских сообщений.
Уровень сообщения.
Дополнительная информация об ошибке.
Сведения об ошибках.
События при возникновении исключения.
6.2 Проверка утверждений
Отладка и выявление программных дефектов.
Использование оператора ASSERT.
6.3 Обработка ошибок
Перехват ошибки времени исполнения.
Секция EXCEPTION.
Получение информации об ошибке.
Вложенность блоков и распространение исключений из подблоков.
Влияние на производительность.
Практические занятия
Написание функций с обработкой исключений.
Тема 7. Использование курсоров
7.1 Введение в курсоры
Введение в курсоры.
Назначение курсоров.
7.2 Использование курсоров
Объявление курсора.
Открытие курсора.
Получение строк из курсора.
Обработка строк.
Закрытие курсора.
Практические занятия
Использование курсоров в программных блоках.
Тема 8. Триггеры и триггерные функции
8.1 Триггеры и триггерные функции
Что такое триггер.
Особенности триггерной функции.
Использование триггеров.
Типы триггеров.
Создание триггера.
Управление триггерами.
8.2 Управление триггерами
Создание триггера.
Управление триггерами.
Просмотр информации о триггерах.
8.3 DML-триггеры
Базовый синтаксис DML-триггера.
DML-триггеры на представления.
Условие WHEN.
Последовательность срабатывания.
Сценарии использования.
8.4 Триггерная функция
Характеристики.
Структура TriggerData.
Возвращаемое значение триггерной функции.
Переходные таблицы.
Встроенные триггерные функции.
8.5 Триггеры событий
Синтаксис триггера событий.
Характеристики триггеров событий.
Получение доп. информации в триггерах событий.
Практические занятия
1. Создание триггеров DML.
2. Создание INSTEAD OF триггера.
3. Создание триггера событий.
Тема 9. Итоговая аттестация
Зачет.