Слайд 2
![Программные модули Процедура Функция Пакет Триггер Объектный тип Хранимые процедуры на Java](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-1.jpg)
Программные модули
Процедура
Функция
Пакет
Триггер
Объектный тип
Хранимые процедуры на Java
Слайд 3
![Процедура Процедура – именованный модуль, который выполняет одно или несколько](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-2.jpg)
Процедура
Процедура – именованный модуль, который выполняет одно или несколько выражений и
может принимать или возвращать значения через список параметров
Слайд 4
![Привилегии Для создания процедур необходима привилегия create procedure](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-3.jpg)
Привилегии
Для создания процедур необходима привилегия create procedure
Слайд 5
![Параметры Наименование Тип данных Режим передачи Начальное значение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-4.jpg)
Параметры
Наименование
Тип данных
Режим передачи
Начальное значение
Слайд 6
![Тип данных параметров PL/SQL или программно-определенный Не может быть ограничен](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-5.jpg)
Тип данных параметров
PL/SQL или программно-определенный
Не может быть ограничен по размеру
Размер определяется
через вызывающую программу или через связанное объявление переменной
Слайд 7
![Параметры Типы параметров: IN OUT IN OUT При выполнении: Значения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-6.jpg)
Параметры
Типы параметров:
IN
OUT
IN OUT
При выполнении:
Значения OUT устанавливаются в NULL
Значения IN OUT
остаются неизменными
При ошибке присвоения для параметров откатываются, кроме NOCOPY
Слайд 8
![Значения по умолчанию IN, IN OUT Можно не задавать при вызове](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-7.jpg)
Значения по умолчанию
IN, IN OUT
Можно не задавать при вызове
Слайд 9
![Передача параметров Позиционный – каждое значение в списке аргументов вызова](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-8.jpg)
Передача параметров
Позиционный – каждое значение в списке аргументов вызова ставится в
соответствие формальному параметру по порядку. Empid_to_name(23, name, surname);
Именованный – явно связывает аргументы при вызове с параметрами по именам. Empid_to_name(in_id =>23, out_name=> name, out_surname =>surname);
Можно комбинировать оба метода, пока позиционные аргументы стоят слева.
Empid_to_name(23, name, out_surname =>surname);
Слайд 10
![Синтаксис invoker_rights_clause](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-9.jpg)
Синтаксис
invoker_rights_clause
Слайд 11
![Процедуры](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-10.jpg)
Слайд 12
![Вызов процедуры](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-11.jpg)
Слайд 13
![Отладка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-12.jpg)
Слайд 14
![Отладка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-13.jpg)
Слайд 15
![Отладка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-14.jpg)
Слайд 16
![Переменные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-15.jpg)
Слайд 17
![Вызов процедур](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-16.jpg)
Слайд 18
![Вызов процедур](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-17.jpg)
Слайд 19
![Вызов процедур](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-18.jpg)
Слайд 20
![Значения по умолчанию - DEFAULT](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-19.jpg)
Значения по умолчанию - DEFAULT
Слайд 21
![Значения по умолчанию - DEFAULT](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-20.jpg)
Значения по умолчанию - DEFAULT
Слайд 22
![Компиляция OR REPLACE – перестроение уже существующего модуля, привилегии на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-21.jpg)
Компиляция
OR REPLACE – перестроение уже существующего модуля, привилегии на выполнение сохраняются
AUTHID
– определяет, как будет выполняться модуль и разрешаться имена в БД:
DEFINER – (по умолчанию) от имени владельца модуля
CURRENT_USER - от имени пользователя, выполняющего модуль
Слайд 23
![Вызов процедуры пользователем, не являющимся владельцем](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-22.jpg)
Вызов процедуры пользователем, не являющимся владельцем
Слайд 24
![AUHID {CURRENT_USER|DEFINER}](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-23.jpg)
AUHID {CURRENT_USER|DEFINER}
Слайд 25
![SQL-оператор CALL вызова процедур](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-24.jpg)
SQL-оператор CALL вызова процедур
Слайд 26
![USER_PROCEDURES](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-25.jpg)
Слайд 27
![USER_SOURCE](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-26.jpg)
Слайд 28
![Функция Функция – именованный модуль, который выполняет ноль или более](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-27.jpg)
Функция
Функция – именованный модуль, который выполняет ноль или более выражений через
фразу Return
Может быть вызвана следующим образом:
В присвоении начального значения переменной
В выражении присвоения
В булевом выражении
В SQL запросе
Как аргумент в списке параметров другой функции или процедуры
Слайд 29
![Функции](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-28.jpg)
Слайд 30
![Простейшая функция](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-29.jpg)
Слайд 31
![В SQL Developer](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-30.jpg)
Слайд 32
![Отладка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-31.jpg)
Слайд 33
![Применение функций в SELECT](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-32.jpg)
Применение функций в SELECT
Слайд 34
![Функция без параметров](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-33.jpg)
Слайд 35
![Вызов в SELECT](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-34.jpg)
Слайд 36
![Ключевые слова DETERMINISTIC – функция детерминирована, если она возвращает одно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-35.jpg)
Ключевые слова
DETERMINISTIC – функция детерминирована, если она возвращает одно и то
же значение при вызове с теми же параметрами
AGGREGATE USING – используется для агрегатных функций.
Слайд 37
![DETERMINISTIC](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-36.jpg)
Слайд 38
![Пакеты Пакеты - коллекция PL/SQL объектов, сгруппированных вместе. Преимущества: Скрытие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-37.jpg)
Пакеты
Пакеты - коллекция PL/SQL объектов, сгруппированных вместе.
Преимущества:
Скрытие информации
Объектно-ориентированный дизайн
Постоянство объектов в
транзакциях
Улучшенная производительность
Можно включать в пакет: процедуры, функции, константы, исключения, курсоры, переменные, TYPE выражения, записи, REF курсоры
Слайд 39
![Пакеты Спецификация пакета (package) – обязательна, содержит список объектов для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-38.jpg)
Пакеты
Спецификация пакета (package) – обязательна, содержит список объектов для общего доступа
из других модулей или приложения
Реализация пакета (package body) – содержит весь программный код для реализации процедур и функций и спецификации, приватные объекты и секцию инициализации
Слайд 40
![Спецификация пакета](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-39.jpg)
Слайд 41
![Пример пакета](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-40.jpg)
Слайд 42
![Пример использования пакета](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-41.jpg)
Пример использования пакета
Слайд 43
![Пакеты Вызов пакета: Package_name.package_element; Структуры данных, объявленные в пакете, называются](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-42.jpg)
Пакеты
Вызов пакета:
Package_name.package_element;
Структуры данных, объявленные в пакете, называются пакетными данными.
Пакетные переменные
сохраняют свое состояние от одной транзакции к другой и являются глобальными данными.
Слайд 44
![Пакеты AUHID {CURRENT_USER|DEFINER} Словарь: USER_PROCEDURES, USER_SOURCE ALTER PACKAGE COMPILE PACKAGE ALTER PACKAGE COMPILE BODY DROP PACKAGE](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/12274/slide-43.jpg)
Пакеты
AUHID {CURRENT_USER|DEFINER}
Словарь: USER_PROCEDURES, USER_SOURCE
ALTER PACKAGE COMPILE PACKAGE
ALTER PACKAGE COMPILE BODY
DROP PACKAGE