Синтаксис альтернативного варианта конструкции CASE таков:
CASE
WHEN условие 1 THEN возвращаемое значение 1
[WHEN условие2 THEN возвращаемое условие 2]
[ELSE значение по умолчанию]
END
Здесь проверяется каждое условие по отдельности. Возвращается то значение, для которого условие является истинным. Возвращаемое значение может быть произвольным выражением, в том числе результатом вызова функции.
Поскольку результат конструкции CASE может менять свой тип в зависимости от условия, столбцу присваивается тип аргумента самого первого предложения THEN.
Функция GET_LOCK() запрашивает именованную блокировку на указанное число секунд. Функция не завершится до тех пор, пока не истечет период тайм-аута или блокировка не будет получена.
Одному сеансу может принадлежать только одна блокировка. Вызов функции
GET_LOCK() приводит к снятию всех удерживаемых блокировок, но лучше все же снимать их явно с помощью функции RELEASE_LOCK(). Блокировка снимается также в случае завершения сеанса.
Наличие блокировки не дает ее владельцу никаких преимуществ и никак не ограничивает работу других сеансов. Тем не менее при согласованном применении именованных блокировок несколькими программами появляется возможность реализовать блокирование произвольного уровня детализации.
Функция возвращает разные значения в зависимости от того, истинным или ложным является проверяемое выражение. Результат проверки приводится к целому типу.
Как и в случае конструкции CASE, тип результата функции IF нельзя определить заранее. Если одно из возвращаемых значений — строка, результат будет строковым.
Если же это условие не выполняется, но одно из значений является числом с плавающей запятой, то и результат будет аналогичным. В противном случае оба значения приводятся к целочисленному типу.
Функция возвращает проверяемое значение, если оно не равно NULL. В противном случае возвращается второй аргумент.
Функция дожидается, пока подчиненный сервер синхронизируется с главным сервером в процессе репликации. Необходимо указать имя журнального файла и позицию, которой должен достигнуть подчиненный сервер. Если данный компьютер не сконфигурирован в качестве главного сервера, функция немедленно возвращает NULL. Если же подчиненный сервер еще не запущен, функция блокируется до тех пор, пока сервер не запустится и не достигнет указанной позиции журнального файла.
Функция возвращает число событий, зарегистрированных в процессе ожидания.