Spec-Zone.ru › MariaDB

Оператор CASE

Синтаксис

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

Или:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list] 
END CASE

Описание

На этой странице описан оператор CASE для хранимых программ. Подробности об операторе CASE вне хранимых программ см. в ОПЕРАТОРЕ CASE.

Оператор CASE для хранимых программ реализует сложное условное выражение. Если условие search_condition истинно, выполняется соответствующий список SQL-команд. Если ни одно из условий поиска не выполняется, выполняется список команд в разделе ELSE . Каждый statement_list состоит из одной или нескольких команд.

Оператор CASE не может содержать раздел ELSE NULL, и он завершается END CASE вместо END. Он реализует сложное условное выражение. Если условие search_condition истинно, выполняется соответствующий список SQL-команд. Если ни одно из условий поиска не выполняется, выполняется список команд в разделе ELSE . Каждый statement_list состоит из одной или нескольких команд.

Если ни одно из значений when_value или условий поиска не соответствует проверяемому значению, а оператор CASE не содержит раздела ELSE, возникает ошибка «Case not found for CASE».

Каждый список_команд состоит из одной или нескольких команд; пустой statement_list не допускается. Для обработки ситуаций, когда ни одно значение не соответствует какому-либо разделу WHEN, используйте раздел ELSE, содержащий пустой блок BEGIN ... END, как показано в этом примере:

DELIMITER |
CREATE PROCEDURE p()
BEGIN
  DECLARE v INT DEFAULT 1;
  CASE v
    WHEN 2 THEN SELECT v;
    WHEN 3 THEN SELECT 0;
    ELSE BEGIN END;
  END CASE;
END;
|

Отступы в разделе ELSE здесь используются только для ясности и не имеют иного значения. Подробнее об использовании команды delimiter см. в разделе Разделители в клиенте MariaDB.

Примечание: Синтаксис оператора CASE в хранимых программах немного отличается от синтаксиса выражения SQL CASE, описанного в ОПЕРАТОРЕ CASE. Оператор CASE не может содержать раздел ELSE NULL, и он завершается END CASE вместо END.

Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/case-statement/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API