Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Условные операторы в хранимых процедурах в mysql

Оператор IF

С помощью оператора IF в MySQL можно выполнять сравнение двух элементов в выражении. В качестве операндов в MySQL могут выступать функции, операторы, переменные, литералы и их комбинации. Результатом выполнения IF может быть одно из 3 значений: FALSE, TRUE или NULL.

Синтаксис оператора IF:

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

Если в первой строке кода выражение if_expression примет значение TRUE, команды commands будут выполнены. Если же выражение примет значение FALSE, то после проверки MySQL существования блока ELSEIF проверяется значение выражения elseif_expression. Если оно примет значение TRUE, то выполняется блок commands2.

Статья: Условные операторы в хранимых процедурах в mysql
Найди решение своей задачи среди 1 000 000 ответов

При наличии в операторе нескольких веток ELSEIF они проверяются последовательно (сверху вниз), пока одно из них не даст TRUE. Если все выражения FALSE, то выполнится блок commands3.

Пример выполнения оператора IF

Пусть необходимо создать процедуру GetCustomerLevel, в которой по указанному номеру покупателя будет определяться тип его карты согласно уровню допустимого кредита. При допустимом кредите более 50 000 уровень покупателя – Платиновый, при кредите более 10 000 – Золотой, если менее 10 000 – серебряный.

Схема работы хранимой процедуры GetCustomerLevel. Автор24 — интернет-биржа заказчиков и авторов

Схема работы хранимой процедуры GetCustomerLevel. Автор24 — интернет-биржа заказчиков и авторов

«Условные операторы в хранимых процедурах в mysql» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Оператор CASE

В MySQL используется две формы оператора CASE: простая и поисковая.

Простая форма оператора CASE

Синтаксис оператора CASE:

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

MySQL считывается case_выражение, далее последовательно сравнивается результат с when_выражениями. При получении совпадения выполняется соответствующий блок команд. Если значение case_выражения не совпадает ни с одним из when_выражений будет выполнен блок команд ELSE.

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

Пример использования оператора CASE

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

Аргументом хранимой процедуры GetCustomerShipping является номер клиента, а выходной строкой – период доставки товара, который основан на стране клиента. В середине хранимой процедуры объявляется переменная, в которую будет записываться страна клиента. Далее выполняется запрос на получение страны клиента, который запишется в эту переменную, и выполнится простой оператор CASE для сравнения страны. Пусть доставка по США проведется за 1 день, по Канаде – за 3 дня, а по всему миру – за 5 дней.

Схема работы хранимой процедуры GetCustomerShipping. Автор24 — интернет-биржа заказчиков и авторов

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

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

Поисковой оператор CASE

С помощью простого оператора CASE можно сопоставить выражения с уже указанным набором значений. Для выполнения сложных сравнений (например, диапазоны значений) используют поисковой оператор CASE, который эквивалентен оператору IF, но удобнее читается.

MySQL сравнивается каждое условие WHEN, пока не найдется совпадение TRUE, после выполняется блок команд, который следует после слова THEN.

Как и в случае простого оператора, если блок ELSE найден не будет и не будет ни одного соответствия, MySQL выдаст ошибку.

В MySQL нельзя использовать пустые команды в ELSE или THEN. Для использования пустой логики можно убрать ее в блок ELSE и вставить пустой блок BEGIN END.

Рассмотрим работу поискового оператора CASE для вышеприведенного примера выдачи кредитной карты покупателя:

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

В данной хранимой процедуре была использована логика:

  • При сумме кредитной линии более 50 000 карта клиента – пластиковая;
  • При сумме менее 50 000, но более 10 000 – золотая;
  • При сумме менее 10 000 – серебряная.

Проверим хранимую процедуру с помощью выполнения фрагмента кода:

Условные операторы в хранимых процедурах в mysql. Автор24 — интернет-биржа заказчиков и авторов

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 28.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot