Язык запросов SQL

         

Обход условий вызывающих ошибки



Обход условий, вызывающих ошибки

Другим ценным применением выражения CASE является обход исключений — проверка условий, которые вызывают ошибки. Проанализируйте выражение CASE, которое определяет размер "компенсации" для продавцов. В компаниях, где работникам компенсируют недополученные комиссионные, часто к комиссионным своих новых работников дают еще и "компенсацию". В следующем примере такую "компенсацию" к своим комиссионным получают новые продавцы, причем по мере роста комиссионных ее размер довольно сильно уменьшается:

UPDATE SALES_COMP

SET COMP = COMMISION + CASE

        WHEN COMMISSION <> 0

            THEN DRAW/COMMISSION

        WHEN COMMISSION = 0

            THEN DRAW

END ;

Если у продавца комиссионных нет, то структура этого примера позволяет избежать операции деления на нуль, которая, как известно, приводит к ошибке. А если продавец все же заработал какие-то комиссионные, то ему выплатят эти комиссионные плюс "компенсацию", которая уменьшается пропорционально их размеру.

Все выражения THEN внутри общего выражения CASE должны быть одного и того же типа — или все числовые, или символьные, или даты-времени. Результат выражения CASE имеет тот же тип.



Содержание раздела