PROCEDURE "GET_SALARY_EXCEPTION"
( p_last_name IN VARCHAR2) AS
v_salary number;
v_department_name varchar2(50);
v_err number := 0;
v_sqlerrm varchar2(1000);
e number;
i number := 0;
k number := 10;
BEGIN
begin
select salary, department_name into v_salary, v_department_name
from employees e, departments d
where last_name = p_last_name and
e.department_id = d.department_id;
dbms_output.put_line(
p_last_name || ' verdient ' || v_salary ||' und arbeitet in ' ||
v_department_name );
e:= k/i; -- achtung division durch 0!
EXCEPTION
when NO_DATA_FOUND then
dbms_output.put_line('Name nicht in Tabelle');
v_err := 1;
v_sqlerrm := SQLERRM;
when TOO_MANY_ROWS then
dbms_output.put_line('Name mehrfach in der Tabelle');
v_err := 2;
v_sqlerrm := SQLERRM;
/* when OTHERS then
dbms_output.put_line('Boeser Fehler');
v_err := 3;
v_sqlerrm := SQLERRM;*/
end;
if (v_err > 0) then
dbms_output.put_line('jetzt bin ich nach dem Fehler! '
|| v_sqlerrm);
end if;
exception
when OTHERS then
dbms_output.put_line('Boeser Fehler');
v_err := 3;
v_sqlerrm := SQLERRM;
END;
declare
v_emp_id number;
v_err number;
begin
v_err := 0;
begin
select employee_id into v_emp_id from bonus
where last_name = 'Fay';
exception
when NO_DATA_FOUND then
dbms_output.put_line('nix da');
v_err := 1;
when TOO_MANY_ROWS then
dbms_output.put_line('viel zu viel da');
v_err := 2;
when OTHERS then
dbms_output.put_line('hui bu, echt schlimm');
v_err := 3;
end;
if v_err != 0 then
v_emp_id := 1;
/*
...
...
*/
end if;
dbms_output.put_line(v_emp_id ||' '|| v_err);
end;