
- •Лекция 6. Хранимые процедуры и функции
- •Определение хранимой процедуры
- •Хранимые процедуры и привилегии
- •Преимущества хранимых процедур
- •Создание хранимой процедуры
- •Параметры процедуры
- •Хранимые функции
- •Определение курсора
- •Курсоры
- •Курсоры
- •Возьмем в качестве примера использование хранимой процедуры для обновления таблицы info и будем
- •Еще один вариант использования через хранимую процедуру с использованием сразу двух курсоров:
- •Продолжение процедуры
- •Как использовать курсоры
- •Объявление курсоров
Лекция 6. Хранимые процедуры и функции
Определение ХП
Преимущества ХП
Параметры ХП
Хранимые функции
Определение курсора
Определение хранимой процедуры
Хранимая процедура — это SQL-код, хранящийся непосредственно на сервере.
Хранимые процедуры появились в СУБД My SQL, начиная с версии 5.0.0.
Хранимые процедуры и привилегии
Начиная с версии 5.0.3, СУБД My SQL требует от пользователя наличия следующих привелегий при работе с хранимыми процедурами:
Для создания ХП — привелегия CREATE
ROUTINE;
Для редактирования и удаления ХП - ALTER
ROUTINE;
Для вызова ХП - EXECUTE.
Преимущества хранимых процедур
Повторное использование кода;
Сокращение сетевого трафика;
Безопасность;
Простота доступа;
Выполнение деловой логики.
Создание хранимой процедуры
Для создания хранимой процедуры
существуют два оператора: CREATE
PROCEDURE и CREATE FUNCTION
CREATE PROCEDURE sp_name ([parametr[,...]])
[characteristik...] routine_body
CREATE FUNCTION sp_name ([parametr[,...]]) RETURNS type
[characteristik...] routine_body
Параметры процедуры
IN | OUT | INOUT | param_name type
IN — данные передаются строго внутрь хранимой процедуры;
OUT — данные передаются строго из хранимой процедуры;
INOUT — значение параметра принимается во внимание и внутри процедуры и на выходе из нее.
Хранимые функции
Оператор CREATE FUNCTION создает хранимую функцию.
Функция в отличие от процедуры может
вызываться непосредственно, без оператора
CALL;
Функция может возвращать одно значение;
Значение подставляется в место вызова функции.
Определение курсора
Курсор — это логическая сущность, которая ведет себя как таблица, но таковой не является.
Курсоры иногда называют виртуальными таблицами.
Курсоры
При помощи оператора DECLARE объявляется курсор для отдельного оператора SELECT или для отдельной процедуры.
Оператором OPEN производится открытие курсора.
Используя оператор FETCH, осуществляется установление указателя на требуемую запись курсора. При этом значения полей текущей записи присваиваются переменным, указываемым в операторе FETCH. Обычно это конструкция помещается в итеративный элемент (иначе сказать, цикл), который прерывается по некоторому условию.
Курсоры
Курсоры должны быть объявлены до их использования. Переменные с условиями объявляются прежде курсоров. Обработчики объявляются строго после объявления курсоров.