Статьи

MySQL хранимая процедура

В эти дни я участвую в новом проекте в моем офисе, и в этом проекте мы активно используем процедуры магазина MySQL. Поэтому я решил написать пост о процедурах магазина MySQL. ?

Я собираюсь обсудить эту тему в серии статей — в этой серии я расскажу:

  •   Введение в хранимую процедуру MySQL (текущая)
  •   Как обращаться с переменными и параметрами в хранимых процедурах MySQL
  •   Как использовать условные элементы управления в хранимых процедурах MySQL
  •   Как обрабатывать циклы в хранимой процедуре MySQL
  •   Как использовать Транзакции в Хранимой Процедуре MySQL и Исключении Sql, Обработке Предупреждений SQL
  •   Как использовать курсоры в хранимой процедуре MySQL
  •   Как отладить процедуру хранения MySQL
  •   Как написать модульное тестирование для MySQL Store

Хорошо, теперь мы переходим к определению того, что является основной концепцией процедуры магазина. В этой статье я собираюсь дать ответы на эти вопросы

  1. Какова цель процедур магазина?
  2. Какова цель использования Delimiter?
  3. Как создать простую хранимую процедуру?
  4. Как вызвать вашу хранимую процедуру?
  5. Как удалить хранимую процедуру?
  6. Как изменить хранимую процедуру?

1. Какова цель процедур магазина?

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

2. Какова цель использования Delimiter?

Разделитель — это символ], который определяет конец вашего оператора SQL.

Почему мы это определяем? Оо

Точка с запятой (;) — уведомление о завершении по умолчанию для любого оператора SQL. Но в хранимой процедуре мы можем иметь несколько операторов SQL, поэтому мы не можем рассматривать точку с запятой в качестве конечного указания Вот почему мы определяем разделитель для каждой хранимой процедуры в MySQL. Обычно я использую $$ в качестве разделителя в моей хранимой процедуре. если вам нужно, вы можете определить свой собственный разделитель в процедуре магазина.

3. Как создать простую хранимую процедуру?

DELIMITER $$

CREATE PROCEDURE `sp_sample_procedure` ()
LANGUAGE SQL
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'comment goes here.'
BEGIN

-- sql querry (insert/select/update/delete)goes here.

END$$

CREATE PROCEDURE `sp_sample_procedure` () : этот элемент создаст вашу процедуру.
ЯЗЫК : Для целей мобильности; значение по умолчанию — SQL.
ДЕТЕРМИНИСТИЧЕСКИЙ : если процедура всегда возвращает одинаковые результаты при одинаковом входе. Это для целей репликации и ведения журнала. Значение по умолчанию НЕ ДЕТЕРМИНИСТИЧЕСКОЕ.
БЕЗОПАСНОСТЬ SQL : Когда мы вызываем процедуру, она проверяет привилегии пользователя. DEFINER — это пользователь, который создал процедуру, а INVOKER — это пользователь, который вызывает процедуру. Значением по умолчанию является DEFINER.
КОММЕНТАРИЙ : Это как табличный комментарий, основная информация о хранимой процедуре.

Это необязательные характеристики ( LANGUAGE, DETERMINISTIC, SQL SECURITY, COMMENT )

4. Как вызвать вашу хранимую процедуру?

Просто выполняем sp имя с ключевым словом CALL, как показано ниже.

CALL sp_sample_procedure();

5. Как удалить хранимую процедуру?

Просто выполнив оператор Drop с именем sp, мы можем удалить sp, с оператором drop лучше использовать оператор IF EXISTS, используя этот оператор, чтобы избежать появления ошибки, если данная процедура не найдена. во время выполнения в базе данных.

DROP PROCEDURE IF EXISTS procedure_name;

6. Как изменить хранимую процедуру?

Как и в таблице alter, мы также можем редактировать нашу хранимую процедуру у нас будет заявление ALTER PROCEDURE.

DELIMITER $$

ALTER PROCEDURE `sp_sample_procedure` ()
LANGUAGE SQL
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'comment goes here.'
BEGIN

-- sql querry (insert/select/update/delete)goes here.

END$$

Итак, здесь я закончил первую статью здесь. Если вы не хотите пропустить другие статьи, подпишитесь на рассылку по электронной почте или следите в Твиттере.

Спасибо хорошего дня ?