Хранимые процедуры MySQL (часть 2)

В этой части статьи допишем начатую в предыдущей статье хранимую процедуру и научимся создавать хранимые mysql функции.

И так нам осталось указать значение для последней переменной PostID. В качестве значения ей будет присвоен результат, который вернёт функция GetPostID, которую сейчас и создадим.

Создание функции

Для начала закрываем текущую форму создания процедуры, нажав на кнопку c надписью Go. Затем в этом же окне снова нажимаем на надпись Add routine, появится знакомая форма, заполним её.

Так же можно указать дополнительные параметры:

Is deterministic — детерминированная функция всегда возвращает один и тот же результат при одинаковых входных параметрах иначе она является не детерминированной. В нашем случае ставим галочку.

Definer и Security type параметры безопасности, в данном примере оставим их без изменений.

SQL data access имеет несколько значений:

NO SQL — не содержит sql.

Contains SQL — содержит встроенные sql функции или операторы, которые не читают, не пишут и не изменяют данные в базе данных. Например, установка значения переменной: SET name = значение;

READS SQL DATA — только чтение данных, без любой модификации данных, указывается для запроса SELECT.

MODIFIES SQL DATA — изменение или внесение данных, в базу данных, указывается для запросов: INSERT, UPDATE, но при этом не должен присутствовать запрос SELECT.

В нашей функции используется запрос SELECT, укажем READS SQL DATA.

Comment комментарий.

После того как все поля заполнены, нажимаем на кнопку с надписью Go.

форма

Возвращаемся на вкладку Routines и отредактируем нашу процедуру, нажав на кнопку edit.

edit

Присвоим переменой PostID в качестве значения результат, который вернёт функция GetPostID.

В результате окончательное тело процедуры будет таким

Остальные поля формы оставим без изменений, нажимаем на кнопку Go. Процедура создана.

Так же можно установить значения для одной или нескольких переменных в результате выполнения запроса. Например, поля: Автор, почта и id пользователя хранятся в таблице wp_users.

таблица wp_users

Зная это можно установить значения для этих переменных следующим образом:

Вызов хранимой процедуры

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

добавленный комментарий

Затем узнаем id добавленного комментария

id комментария

Возвращаемся на вкладку Routines и нажимаем на надпись Execute

выполнить

Появится форма

параметры процедуры

Указываем значения передаваемых параметров: текст ответа и id комментария, после чего нажимаем на кнопку с надписью Go.

установка значений

Если ошибок нет, то открываем страницу и смотрим на результат.

сообщение об отсуствие ошибок

добавленный ответ

Второй способ выполнить процедуру на сервере.

Открываем вкладку SQL

вкладка SQL

С помощью оператора CALL производим вызов нашей процедуры

вызов процедуры

Если ошибок нет, то должны увидеть новый комментарий на странице.

ошибок нет

добавленный новый ответ

Вызов хранимой процедуры на клиенте

Читайте также:

Похожие темы

Как установить Apache, MariaDB/MySQL и PHP на Cent... Если вас интересует, как установить сервер на Windows, то вам сюда "Установка Apache, PHP, MySQL, phpMyAdmin на Windows". Apache, Mari...
Как сделать резервную копию серверной базы данных ... Бэкап баз данных MySQL в Linux Если вы используете сервер MySQL с важной информацией, у вас может возникнуть желание периодически делать резервн...
Как установить MySQL Connectors Установка MySQL Connectors Чтобы начать работать с СУБД MySQL Вам потребуется скачать и установить MySQL Connector — это драйвер, который п...
Лучшие бесплатные плагины для WordPress на сентябр... Плагины, плагины и... ещё раз плагины ))) Мы заходим на новый круг в представлении расширений WordPress'а, которые могут быть как раз тем, что нужно д...
Как проверить тип системы хранения MySQL на Linux ... Узнать тип системы хранения MySQL на Linux Используются две основные системы хранения MySQL: MyISAM и Innodb. MyISAM является не транзакционной,...