Spec-Zone .ru
спецификации, руководства, описания, API
|
CASEcase_value
WHENwhen_value
THENstatement_list
[WHENwhen_value
THENstatement_list
] ... [ELSEstatement_list
]END CASE
Или:
CASE WHENsearch_condition
THENstatement_list
[WHENsearch_condition
THENstatement_list
] ... [ELSEstatement_list
]END CASE
CASE
оператор для сохраненных программ реализует сложную условную конструкцию.
Есть также a CASE
выражение, которое отличается от CASE
оператор, описанный здесь.
См. Раздел
12.4, "Функции Потока управления". CASE
оператор не может иметь ELSE NULL
пункт, и это завершается с END CASE
вместо END
.
Для первого синтаксиса, case_value
выражение. Это значение по
сравнению с when_value
выражение в каждом WHEN
пункт до одного из них равен. Когда равное when_value
находится, соответствие THEN
пункт statement_list
выполняется. Если нет when_value
равно, ELSE
пункт statement_list
выполняется, если есть тот.
Этот синтаксис не может использоваться, чтобы протестировать на равенство с NULL
потому что NULL = NULL
ложь. См. Раздел
3.3.4.6, "Работающий с NULL
Значения".
Для второго синтаксиса, каждого WHEN
пункт search_condition
выражение оценивается, пока каждый не истина, в который точка ее соответствие THEN
пункт statement_list
выполняется. Если нет search_condition
равно, ELSE
пункт
statement_list
выполняется, если есть тот.
Если нет when_value
или search_condition
соответствует протестированное значение и CASE
оператор содержит нет ELSE
пункт, Случай, не найденный для ошибочных результатов Оператора выбора.
Каждый statement_list
состоит из одного или более SQL-операторов;
пустое statement_list
не разрешается.
Обработать ситуации, где никакое значение не является соответствующим никем WHEN
пункт, используйте ELSE
содержа пустое BEGIN ... END
блок, как показано в этом примере. (Добавление отступа,
используемое здесь в ELSE
пункт в целях ясности только, и не является иначе
существенным.)
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;|