このケースを検討してください:
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;
出力はどうなりますか?3 つのステートメントすべてをエコーしますか? もしそうなら、どうすればpl/sqlでスイッチケースを壊すことができますか?
ドキュメントを読んでください。
条件が真であることが判明すると、case ステートメントは結果を返し、それ以上条件を評価しません。詳細については、こちらを参照してください。
case ステートメントの構文は次のとおりです。
CASE [式]
WHEN 条件_1 THEN 結果_1
WHEN 条件_2 THEN 結果_2
...
WHEN 条件_n THEN 結果_n
ELSE 結果
終わり
式はオプションです。条件のリストと比較する値です。(つまり: 条件 1、条件 2、... 条件 n)
condition_1 から condition_n はすべて同じデータ型でなければなりません。条件は、リストされている順序で評価されます。条件が真であることが判明すると、case ステートメントは結果を返し、それ以上条件を評価しません。
result_1 から result_n はすべて同じデータ型である必要があります。これは、条件が true であることが判明したときに返される値です。