PL SQL Programming Oracle PLSQL Tutorial

SQL>
SQL> create table employee (
  2  id                             number,
  3  employee_type_id               number,
  4  external_id                    varchar2(30),
  5  first_name                     varchar2(30),
  6  middle_name                    varchar2(30),
  7  last_name                      varchar2(30),
  8  name                           varchar2(100),
  9  birth_date                     date  ,
 10  gender_id                      number );
Table created.
SQL>
SQL> create table gender (
  2  id                             number,
  3  code                           varchar2(30),
  4  description                    varchar2(80),
  5  active_date                    date          default SYSDATE  not null,
  6  inactive_date                  date );
Table created.
SQL>
SQL> insert into gender ( id, code, description ) values ( 1, 'F', 'Female' );
1 row created.
SQL> insert into gender ( id, code, description ) values ( 2, 'M', 'Male' );
1 row created.
SQL> insert into gender ( id, code, description ) values ( 3, 'U', 'Unknown' );
1 row created.
SQL>
SQL> set serveroutput on size 1000000;
SQL>
SQL> declare
  2
  3  d_birth_date                          employee.birth_date%TYPE;
  4  n_gender_id                           employee.gender_id%TYPE;
  5  n_selected                            number := -1;
  6  n_id                                  employee.id%TYPE;
  7  v_first_name                          employee.first_name%TYPE;
  8  v_last_name                           employee.last_name%TYPE;
  9  v_middle_name                         employee.middle_name%TYPE;
 10  v_name                                employee.name%TYPE;
 11
 12  begin
 13    v_first_name  := 'JOHN';
 14    v_middle_name := 'J.';
 15    v_last_name   := 'DOUGH';
 16    v_name        := rtrim(v_last_name||', '||v_first_name||' '||v_middle_name);
 17    d_birth_date  := to_date('19800101', 'YYYYMMDD');
 18
 19    begin
 20      select id into n_gender_id from gender where code = 'M';
 21    exception
 22      when OTHERS then
 23        raise_application_error(-20001, SQLERRM||' on select gender');
 24    end;
 25
 26    begin
 27      select id
 28      into   n_id
 29      from   employee
 30      where  name       = v_name
 31      and    birth_date = d_birth_date
 32      and    gender_id  = n_gender_id;
 33
 34      n_selected := sql%rowcount;
 35    exception
 36      when NO_DATA_FOUND then
 37        n_selected := sql%rowcount;
 38        DBMS_OUTPUT.PUT_LINE('Caught raised exception NO_DATA_FOUND');
 39      when OTHERS then
 40        raise_application_error(-20002, SQLERRM||' on select employee');
 41    end;
 42
 43    DBMS_OUTPUT.PUT_LINE(to_char(n_selected)||' row(s) selected.');
 44  end;
 45  /
Caught raised exception NO_DATA_FOUND
0 row(s) selected.
PL/SQL procedure successfully completed.
SQL>
SQL> drop table gender;
Table dropped.
SQL>
SQL> drop table employee;
Table dropped.
SQL>