Oracle PL/SQL/PL SQL/When — различия между версиями

Материал из SQL эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 09:59, 26 мая 2010

Exit when loop

 
SQL>  declare
  2      l_loops number := 0;
  3    begin
  4      dbms_output.put_line("Before my loop");
  5
  6      loop
  7        exit when l_loops > 4;
  8        dbms_output.put_line("Looped " || l_loops || " times");
  9        l_loops := l_loops + 1;
 10      end loop;
 11
 12      dbms_output.put_line("After my loop");
 13    end;
 14    /
Before my loop
Looped 0 times
Looped 1 times
Looped 2 times
Looped 3 times
Looped 4 times
After my loop
PL/SQL procedure successfully completed.
SQL>



Use when inside case

SQL>
SQL> -- switch case
SQL>
SQL>
SQL> declare
  2    l_num number := 7;
  3  begin
  4    case l_num
  5      when 1 then dbms_output.put_line("You selected one");
  6      when 2 then dbms_output.put_line("You selected two");
  7      when 3 then dbms_output.put_line("You selected three");
  8      when 4 then dbms_output.put_line("You selected four");
  9      when 5 then dbms_output.put_line("You selected five");
 10      when 6 then dbms_output.put_line("You selected six");
 11      when 7 then dbms_output.put_line("You selected seven");
 12      when 8 then dbms_output.put_line("You selected eight");
 13      when 9 then dbms_output.put_line("You selected nine");
 14      when 0 then dbms_output.put_line("You selected zero");
 15      --else dbms_output.put_line("You selected more than one digit...");
 16    end case;
 17  end;
 18  /
You selected seven
PL/SQL procedure successfully completed.
SQL>



Use when to catch exceptions

SQL>
SQL> -- catch Exception
SQL>
SQL>  declare
  2      l_number number;
  3    begin
  4      l_number := "MY NUMBER";
  5    exception
  6      when OTHERS then
  7        dbms_output.put_line("Exception caught");
  8        raise;
  9    end;
 10    /
Exception caught
 declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 8

SQL>