КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Создание хранимой процедуры (функции)
Хранимые программы (процедуры и функции) поддерживаются в MySQL 5.0. Хранимые процедуры – набор SQL-выражений, который может быть сохранен на сервере. Как только это сделано, клиенту уже не нужно повторно передавать запрос, а требуется просто вызвать хранимую программу.
Создадим и заполним таблицу test для последующей работы с ней:
Далее напишем хранимую процедуру pr5: mysql> delimiter // mysql> create procedure pr5 (in t int) -> begin -> select count(id) from test where id > t; -> end; -> //
delimiter // - разделитель запросов; теперь для окончания ввода вместо ‘;’ необходимо будет использовать последовательность ‘//’. Это делается для того, чтобы символ ‘;’ не воспринимался как сигнал к отправке запроса на сервер. create procedure – команда на создание хранимой процедуры; begin – команда, означающая начало хранимой процедуры, после которой всегда следует тело этой процедуры; end – команда, обозначающая завершение хранимой процедуры.
Здесь в скобках (in t int) также указано ключевое слово in. Таких слов всего три: in, out, inout, которые позволяют задать направление передачи данных.
in – данные передаются строго внутрь хранимой процедуры, но если параметру с данным модификатором внутри функции присваивается новое значение, по выходу из нее оно не сохраняется и параметр принимает значение, которое он имел до вызова процедуры;
out – данные передаются строго из хранимой процедуры, даже если параметр имеет какое-то начальное значение, внутри хранимой процедуры это значение не принимается в внимание. С другой стороны, если параметр изменяется внутри хранимой процедуры, после вызова процедуры параметр имеет значение, присвоенное ему внутри процедуры;
inout – параметр принимается во внимание как внутри процедуры, так и сохраняет свое значение после выхода из нее.
Замечание! Атрибуты in, out, inout доступны только для хранимой процедуры, в хранимой функции все параметры всегда имеют атрибут in.
Замечание! Список аргументов, заключенных в круглые скобки должен присутствовать всегда. Если аргументы отсутствуют, следует использовать пустой список аргументов pr5().
Замечание! Определив разделитель delimiter, не обязательно прописывать его в последующих процедурах, если только вы не хотите сменить разделитель и вернуться, например, к ‘;’.
После имени параметра t указывается его тип (в данном примере int). По умолчанию, если ни одни из модификаторов не указан, считается, что параметр (в данном примере t) объявлен с ключевым словом in.
Вызовем созданную нами хранимую процедуру, для чего воспользуемся командой call:
Дата добавления: 2015-05-09; Просмотров: 673; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |