1. Основные понятия
1.1. Место PL/SQL в архитектуре Oracle
1.2. Общая структура программы на PL/SQL
2. Основные типы и структуры данных
2.1. Простые скалярные типы
2.1.1. Числовые типы
2.1.2. Типы для строк
2.1.3. Типы для моментов и интервалов времени
2.1.4. Булев тип
2.2. Типы LOB («большие неструктурированные объекты»)
2.3. Объявление переменных и постоянных
2.4. Составные типы
2.4.1. Записи
2.4.2. Объекты
2.5. Ссылка на типы уже имеющихся данных и собственные подтипы
2.5.1. Ссылка на типы уже имеющихся данных
2.5.2. Пользовательские подтипы
3. Выражения
3.1. Ограничения для выражений в PL/SQL
3.2. Расширения возможностей выражений в PL/SQL
4. Основные управляющие структуры
4.1. Ветвление программы
4.1.1. Предложение IF-THEN
4.1.2. Предложение IF-THEN-ELSE
4.1.3. Предложение IF-THEN-ELSIF
4.1.4. Предложения CASE
4.1.5. Безусловная передача управления
4.2. Циклы
4.2.1. Простой цикл
4.2.2. Цикл WHILE
4.2.3. Счетный цикл (FOR)
4.2.4. Цикл по курсору (FOR)
4.3. Метки в циклах и в блоках
5. Подпрограммы
5.1. Локальные подпрограммы
5.2. Использование для подпрограмм «внешних» имен
5.3. Предваряющие (forward) объявления
5.4. Одноименные подпрограммы на одном уровне (overloading)
6. Взаимодействие с базой данных: статический SQL
6.1. Предложения SQL в качестве операторов PL/SQL
6.2. Использование записей вместо списка скаляров
6.3. Регулирование изменений в БД
6.3.1. Управление транзакциями
6.3.2. Блокировки таблицы
6.3.3. Ожидание освобождения строк таблицы в программе
6.3.4. Автономные транзакции
6.4. Прямое указание запроса в цикле по курсору
7. Использование курсоров
7.1. Явные курсоры
7.1.1. Объявление явных курсоров
7.1.2. Открытие явных курсоров
7.1.3. Извлечение результата через явный курсор
7.1.4. Закрытие явного курсора
7.1.5. Отсутствие запрета изменений таблиц при открытом курсоре
7.1.6. Атрибуты для явных курсоров
7.2. Несколько примеров использования циклов и курсоров
7.3. Курсоры с блокировкой строк таблицы
7.3.1. Предложение SELECT … FOR UPDATE
7.3.2. Предосторожности употребления курсоров с блокировкой
7.3.3. Изменение строк, выбираемых курсором
7.4. Неявные курсоры
8. Встроенный динамический SQL
8.1. Операторы встроенного динамического SQL
8.1.1. EXECUTE IMMEDIATE
8.1.2. OPEN … FOR
8.2. Сравнительный пример двух способов работы с динамическим SQL
8.3. Работа с динамическим SELECT посредством ссылки на курсор
8.3.1. Общие сведения
8.3.2. Пример употребления для структуризации программы
9. Обработка исключительных ситуаций
9.1. Объявление исключительных ситуаций
9.2. Примеры обработки
9.3. Порождение исключительных ситуаций
9.4. Зона действия и распространение
9.5. Локальные исключительные ситуации
9.6. Прочие техники обработки особых ситуаций в программе
9.6.1. Использование функций SQLCODE и SQLERRM
9.6.2. Техника обхода исключительных ситуаций
10. Хранимые процедуры и функции
10.1. Общий синтаксис
10.2. Параметры
10.2.1. Тип параметра
10.2.2. Режим использования параметра
10.2.3. Значения по умолчанию
10.2.4. Способы указать фактические значения параметрам
10.2.5. Обращение к параметрам и к локальным переменным в теле подпрограммы
10.3. Рекурсия, взаимные вызовы и повторения имен
10.4. Указания компилятору при создании подпрограмм
10.5. Хранимые подпрограммы и привилегии доступа к объектам в БД
10.5.1. Две логики реализации привилегий доступа к объектам в БД
10.5.2. Особенности передачи привилегий через роли
11. Триггерные процедуры
11.1. Создание триггерной процедуры
11.2. Отключение триггерных процедур
11.3. Особенности триггерных процедур для событий категории DML
11.3.1. Объединенные триггерные процедуры
11.3.2. Управление транзакциями в теле триггерной процедуры
11.3.3. Последовательность срабатывания триггерных процедур
11.3.4. Составные триггерные процедуры
11.3.5. Триггерные процедуры INSTEAD OF для виртуальных таблиц (представлений данных)
11.4. Триггерные процедуры для событий категории DDL
11.5. Триггерные процедуры для событий уровня схемы и БД
12. Пакеты в PL/SQL
12.1. Общая структура пакета
12.2. Обращение к элементам пакета
12.3. Данные пакета
12.4. Рекурсия, взаимные вызовы и повторения имен
12.5. Код начального исполнения в пакете
12.6. Прагма SERIALLY_REUSABLE
13. Редакции именованных программных единиц
13.1. Подготовка схемы для редакций объектов
13.2. Создание редакций процедур
13.3. Создание редакций триггерных процедур
13.4. Перекрестные триггерные процедуры для разных редакций
13.4.1. Подготовка таблиц
13.4.2. Создание перекрестных межредакционных триггерных процедур
13.4.3. Дополнительные замечания по технологии
14. Вызов функций PL/SQL в предложениях SQL
14.1. Требования и ограничения на применение функций пользователей в SQL
14.2. Обращение в SQL к функциям из состава пакетов
14.3. Разрешение конфликта имен столбцов и функций
14.4. Табличные функции в SQL
15. Более сложные типы данных: коллекции
15.1. Синтаксис объявления типов для коллекций
15.2. Работа с ассоциативными массивами
15.3. Создание вложенной таблицы и массива VARRAY в программе
15.4. Добавление и убирание элементов в коллекциях
15.5. Преобразования коллекций в SQL
15.6. Выражения со вложенными таблицами: множественные операции
15.7. Методы для работы с коллекциями в программе
15.8. Примеры использования коллекций в программе
15.9. Привилегии
15.10. Серийное выполнение и привязывание запросов к массивам
15.10.1. Серийное выполнение однотипных операций: конструкция FORALL
15.10.2. Привязка массивами: конструкция BULK COLLECT INTO
15.10.3. Пример для схемы SCOTT
15.11. Использование коллекций в табличных функциях (потоковой реализации)
15.11.1. Простой пример
15.11.2. Использование для преобразования данных
16. Отладка программ в PL/SQL
16.1. Параметры СУБД управления компиляцией
16.2. Условная компиляция
16.2.1. Управляющие конструкции условной компиляции
16.2.2. Выражения в директивах условной компиляции
16.3. Таблицы словаря-справочника
16.4. Зависимости подпрограмм и перекомпиляция
16.5. Системные пакеты в помощь для отладки
16.5.1. Пакет DBMS_PROFILER
16.5.2. Пакет DBMS_TRACE
16.5.3. Функции пакета DBMS_UTILITY
16.5.4. Пакет DBMS_DEBUG
16.6. Пример построения профиля работы программы
16.6.1. Подготовка к работе с пакетом
16.6.2. Пример употребления
16.6.3. Другие возможности
16.6.4. Эксплуатация
17. Системы программирования для PL/SQL
18. Системные пакеты PL/SQL
18.1. Пакеты STANDARD и DBMS_STANDARD
18.2. Прочие системные пакеты
18.2.1. Запись данных из программы в файл и обратно
18.2.2. Шифрование данных
18.2.3. Плановый запуск заданий в Oracle
18.2.4. Управление динамическим размещением объектов в библиотечном буфере
18.2.5. Манипулирование большими неструктурированными объектами
18.2.6. Обращение к прошлым значениям данных в таблице
18.2.7. Получение метаданных и их использование
18.2.8. Рассылка сообщений из программы на PL/SQL
18.2.9. Возможности работы в PL/SQL с COM Automation
Дополнительный материал
19. Примеры употребления ссылки на курсор для разделения обработки запроса в программе
19.1. Простой пример разделения открытия курсора и обработки
19.2. Более сложный пример разделения работы
20. Атрибуты триггерных процедур уровня схемы БД и событий в СУБД