PL SQL Programming Oracle PLSQL Tutorial

SQL>
SQL> set serveroutput on
SQL>
SQL> create or replace procedure proc0 is
  2  begin
  3     RAISE no_data_found;
  4  end;
  5  /
Procedure created.
SQL>
SQL> create or replace procedure proc1 is
  2  begin
  3     NULL;
  4     dbms_output.put_line ('calling proc0');
  5     proc0;
  6  EXCEPTION
  7     WHEN OTHERS THEN RAISE DUP_VAL_ON_INDEX;
  8  end;
  9  /
Procedure created.
SQL>
SQL> create or replace procedure proc2 is
  2  begin
  3     dbms_output.put_line ('calling proc1');
  4     proc1;
  5  EXCEPTION
  6     WHEN OTHERS THEN RAISE value_error;
  7  end;
  8  /
Procedure created.
SQL>
SQL> create or replace procedure proc3 is
  2  begin
  3     dbms_output.put_line ('calling proc2');
  4     proc2;
  5  end;
  6  /
Procedure created.
SQL>
SQL> BEGIN
  2     proc3;
  3  END;
  4  /
calling proc2
calling proc1
calling proc0
BEGIN
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "RNTSOFT.PROC2", line 6
ORA-00001: unique constraint (.) violated
ORA-06512: at "RNTSOFT.PROC1", line 7
ORA-01403: no data found
ORA-06512: at "RNTSOFT.PROC3", line 4
ORA-06512: at line 2
SQL>