2013-07-14 3 views
-3

рассматривать этот случай:Действительно ли случай автоматически ломается?

case when 4 > 3 then dbms_output.put_line('3'); 
    when 4 > 2 then dbms_output.put_line('2'); 
    when 4 > 1 then dbms_output.put_line('1'); 
end case; 

Что будет на выходе? Будет ли это повторять все три заявления? Если это произойдет, как я сломаю корпус коммутатора в pl/sql?

ответ

2

Прочитать documentation.

Как только условие окажется истинным, оператор case вернет результат и не будет оценивать условия дальше. Дальнейшее объяснение можно найти here.

Синтаксис для случая утверждения:

СЛУЧАЙ [выражение]

КОГДА Condition_1 ТОГДА result_1

КОГДА condition_2 ТОГДА result_2

...

КОГДА condition_n THEN result_n

ELSE результат

КОНЕЦ

выражение является необязательным. Это значение, которое вы сравниваете со списком условий. (т.е.: условие_1, условие_2, ... условие_n)

Условие_1 к условию_n должно быть одинаковым типом данных. Условия оцениваются в указанном порядке. Как только условие окажется истинным, оператор case вернет результат и не будет более оценивать условия.

result_1 to result_n должен быть одним и тем же типом данных. Это значение возвращается после того, как условие установлено как true.

+0

Я пропустил эту строку, когда прочитал документацию :) спасибо. –

Смежные вопросы