Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 635; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.