Oracle 12с. Встроенные функции (PL/SQL, лекция 11)

Содержание

Слайд 2

Встроенные функции Числовые функции Символьные функции Функции по работе с датами Конвертирование Функции обработки ошибок

Встроенные функции

Числовые функции
Символьные функции
Функции по работе с датами
Конвертирование
Функции обработки ошибок

Слайд 3

Числовые функции

Числовые функции

Слайд 4

Символьные функции

Символьные функции

Слайд 5

Работа с датами

Работа с датами

Слайд 6

Функции конвертирования

Функции конвертирования

Слайд 7

Sqlerrm и sqlcode Функция SQLERRM возвращает сообщение об ошибке, связанной с

Sqlerrm и sqlcode

Функция SQLERRM возвращает сообщение об ошибке, связанной с исключительной ситуацией.


Функция SQLCODE возвращает номер ошибки, связанной с исключительной ситуацией.
Слайд 8

Функции регулярных выражений Регулярные выражения - формальный язык поиска и осуществления

Функции регулярных выражений

Регулярные выражения - формальный язык поиска и осуществления манипуляций

с подстроками в тексте, основанный на использовании метасимволов. 
Слайд 9

Функции регулярных выражений REGEXP_LIKE выбирает из таблицы все строки, соответствующие заданному

Функции регулярных выражений

REGEXP_LIKE выбирает из таблицы все строки, соответствующие заданному шаблону регулярного

выражения REGEXP
select * from table_name where REGEXP_LIKE(name,'[0-9]{8}‘);
REGEXP_INSTR определяет номер первого символа вхождения REGEXP шаблона в строку
select REGEXP_INSTR (name,'[0-9]{8}')  from  table_name;
Слайд 10

Функции регулярных выражений REGEXP_REPLACE заменяет шаблон регулярного выражения REGEXP в строке

Функции регулярных выражений

REGEXP_REPLACE заменяет шаблон регулярного выражения REGEXP в строке на заданный
select REGEXP_REPLACE(name,'[0-9]{8}',‘date') from  table_name;
REGEXP_SUBSTR выделяет

из строки заданный REGEXP шаблон
select REGEXP_SUBSTR(name, '[0 -9] {8}') from  table_name;
REGEXP_COUNT определяет количество вхождений REGEXP шаблона в строку
select REGEXP_COUNT(name,'[0-9]{1}') from table_name;
Слайд 11

Коллекции Коллекция – структура данных, содержащая элементы одного типа Элементом коллекции

Коллекции

Коллекция – структура данных, содержащая элементы одного типа
Элементом коллекции может быть

как скалярная величина, так и композитные данные
Элементы коллекций можно сравнивать между собой на эквивалентность
Можно передавать параметром в процедуру или функцию
Можно создавать коллекции коллекций
Слайд 12

Записи Запись – структура данных, составленная из нескольких частей информации, называемых

Записи

Запись – структура данных, составленная из нескольких частей информации, называемых полями.
Для

объявления записи вначале надо определить как тип, а потом объявить переменную типа «запись»
Типы записей:
Табличные
Курсорные
Программно-определенные
Слайд 13

Записи

Записи

Слайд 14

Записи

Записи

Слайд 15

Записи

Записи

Слайд 16

Использование полей записи Сравнение производится по полям записи Присвоение: Присвоение для

Использование полей записи

Сравнение производится по полям записи
Присвоение:
Присвоение для отдельного поля
SELECT INTO

в запись в целом или в отдельные поля
Присвоение значения одной записи другой записи – для одного и того же объявления TYPE
Слайд 17

Вложенные записи

Вложенные записи

Слайд 18

Присваивание записей

Присваивание записей

Слайд 19

Локальные программные модули Локальный программный модуль – это процедура или функция,

Локальные программные модули

Локальный программный модуль – это процедура или функция, определенная

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

Перегрузка программных модулей Параметры должны отличаться семейством (number, character, datetime, boolean)

Перегрузка программных модулей

Параметры должны отличаться семейством (number, character, datetime, boolean)
Тип программного

модуля должен отличаться – можно перегружать процедуру и функцию с одинаковым именем и списком параметров
Число параметров должно быть разным
Слайд 21

Локальные процедуры

Локальные процедуры

Слайд 22

Локальные функции

Локальные функции

Слайд 23

Запись - параметр процедуры и функции

Запись - параметр процедуры и функции

Слайд 24

Записи

Записи

Слайд 25

Записи

Записи

Слайд 26

Коллекции Ассоциативные массивы = индексные таблицы ( associative arrays, index-by tables)

Коллекции

Ассоциативные массивы = индексные таблицы ( associative arrays, index-by tables)
Вложенные таблицы

(nested tables)
Массивы переменной длины VARRAY
Слайд 27

Массивы переменной длины Массивы переменной длины – одномерные, связанные коллекции однотипных

Массивы переменной длины

Массивы переменной длины – одномерные, связанные коллекции однотипных элементов
Доступны

в рамках PL/SQL и в БД
Являются плотными
Слайд 28

Вложенные таблицы Вложенные таблицы – одномерные, несвязанные коллекции однотипных элементов Доступны

Вложенные таблицы

Вложенные таблицы – одномерные, несвязанные коллекции однотипных элементов
Доступны в рамках

PL/SQL и как поля таблицы в БД
Изначально являются плотными, но могут впоследствии становиться разреженными
Слайд 29

Ассоциативные массивы Ассоциативные массивы – одномерные, неограниченные (по максимальному количеству элементов

Ассоциативные массивы

Ассоциативные массивы – одномерные, неограниченные (по максимальному количеству элементов при

создании) коллекции элементов
Доступны только в рамках PL/SQL
Изначально являются разреженными, индекс могут принимать непоследовательные значения
Слайд 30

Работа с коллекциями Объявление коллекций Инициализация коллекций Явно с помощью конструктора

Работа с коллекциями

Объявление коллекций
Инициализация коллекций
Явно с помощью конструктора
Неявно при выборке из

базы данных
Прямым присвоением переменной с другой коллекции такого же типа
Добавление и удаление элементов
Ассоциативный массив – присвоение значения новому элементу
Вложенные таблицы и массивы переменной длины – сначала увеличить размер при помощи функции EXTEND, а затем присвоить значения новым элементам
Слайд 31

Массивы переменной длины

Массивы переменной длины

Слайд 32

Массивы переменной длины

Массивы переменной длины

Слайд 33

Массивы переменной длины

Массивы переменной длины

Слайд 34

Массивы переменной длины

Массивы переменной длины

Слайд 35

Массивы переменной длины

Массивы переменной длины

Слайд 36

Массивы переменной длины

Массивы переменной длины

Слайд 37

Вложенные таблицы

Вложенные таблицы

Слайд 38

Ассоциативные массивы

Ассоциативные массивы

Слайд 39

Методы и исключения коллекций

Методы и исключения коллекций

Слайд 40

Сравнение характеристик коллекций Размерность? Можно ли использовать как поле в таблице?

Сравнение характеристик коллекций

Размерность?
Можно ли использовать как поле в таблице?
Неинициализированное состояние?
Инициализация?
Диапазон индексов?
Разреженность?
Ограничен

по максимальному количеству элементов?
Можно ли присваивать значение любому элементу?
Метод расширения и уменьшения?
Можно ли сравнивать на равенство весь объект целиком?
Элементы сохраняют позицию при записи или чтении из БД?
Слайд 41

Обработка исключений Исключительная ситуация – событие, возникающее в программе и требующее

Обработка исключений

Исключительная ситуация – событие, возникающее в программе и требующее незамедлительной

обработки.
Два типа исключительных ситуаций:
1) программно-определяемые исключения;
2) предопределенные (стандартные) исключения.
Слайд 42

Обработка исключений Ошибка, сгенерированная сервером Ошибка в результате действий пользователя Ошибка, сгенерированная приложением пользователю

Обработка исключений

Ошибка, сгенерированная сервером
Ошибка в результате действий пользователя
Ошибка, сгенерированная приложением пользователю

Слайд 43

Стратегия обработки исключений Как и где будут фиксироваться ошибки, чтобы их

Стратегия обработки исключений

Как и где будут фиксироваться ошибки, чтобы их можно

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

Термины обработки исключений Секция исключений – необязательная секция в PL/SQL блоке,

Термины обработки исключений

Секция исключений – необязательная секция в PL/SQL блоке, которая

содержит один или несколько обработчиков исключений.
RAISE (RAISE_APPLICATION_ERROR)– команда, которая прерывает выполнение текущего блока.
Обработка исключений – перехват ошибки в секции исключений.
Область действия – часть кода, в рамках которого может быть сгенерировано исключение.
Распространение исключения – процесс передачи исключений от одного блока другому, если исключение не было обработано.
Слайд 45

Термины обработки исключений Необработанное исключение – исключение становится необработанным, если оно

Термины обработки исключений

Необработанное исключение – исключение становится необработанным, если оно не

обработано блоком самого верхнего уровня.
Неименованное исключение – исключение, которое имеет код ошибки и сообщение, но не имеет наименования, не может быть использовано в команде RAISE или в секции WHEN.
Именованное исключение – исключение, которому было определено наименование.
Слайд 46

Предопределенные исключения

Предопределенные исключения

Слайд 47

Объявление именованных исключений Чтобы обработать исключение, которое не относится определенным сервером,

Объявление именованных исключений

Чтобы обработать исключение, которое не относится определенным сервером, его

необходимо объявить:
exception_name EXCEPTION;
Имена исключений могут быть использованы только для генерации исключения при помощи RAISE и для перехвата исключения в секции WHEN
Слайд 48

Связывание исключений с кодом ошибки Синтаксис: exception_name EXCEPTION; PRAGMA EXCEPTION_INIT (exception_name,

Связывание исключений с кодом ошибки

Синтаксис:
exception_name EXCEPTION;
PRAGMA EXCEPTION_INIT (exception_name, integer);
Где exception_name –

наименование исключения, integer – номер(код) ошибки сервера ORACLE, с которым необходимо связать исключение
Слайд 49

Генерация и обработка исключений

Генерация и обработка исключений

Слайд 50

Генерация и обработка исключений

Генерация и обработка исключений

Слайд 51

Генерация и обработка исключений

Генерация и обработка исключений

Слайд 52

Генерация и обработка исключений

Генерация и обработка исключений

Слайд 53

Генерация и обработка исключений

Генерация и обработка исключений

Слайд 54

Sqlerrm и sqlcode

Sqlerrm и sqlcode

Слайд 55

RAISE_APPLICATION_ERROR

RAISE_APPLICATION_ERROR

Слайд 56

RAISE_APPLICATION_ERROR Определена в пакете DBMS_ STANDARD Можно присвоить сообщение об ошибке

RAISE_APPLICATION_ERROR

Определена в пакете DBMS_ STANDARD
Можно присвоить сообщение об ошибке
При выполнении процедуры:
Выполнение

блока прерывается
Любые изменения в аргументах IN OUT и OUT откатываются
Изменения в глобальных структурах (пакетные переменные, объекты базы данных) не откатываются – для отката надо явно выполнить ROLLBACK
Слайд 57

Распространение исключения

Распространение исключения

Слайд 58

Распространение исключения

Распространение исключения

Слайд 59

Распространение исключения

Распространение исключения

Слайд 60

Распространение исключения

Распространение исключения