Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Cursor
 

Check sql%rowcount

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> create table employee_type (   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 employee_type(id,code,description)values(1,'C','Contractor' ); 1 row created. SQL> insert into employee_type(id,code,description)values(2,'E','Employee' ); 1 row created. SQL> insert into employee_type(id,code,description)values(3,'U','Unknown' ); 1 row created. SQL> SQL> set serveroutput on size 1000000; SQL> SQL> declare   2      v_first_name   employee.first_name%TYPE;   3      v_middle_name  employee.middle_name%TYPE;   4      v_last_name    employee.last_name%TYPE;   5      v_name         employee.name%TYPE;   6      d_birth_date   employee.birth_date%TYPE;   7      n_count        number;   8   9  begin  10    v_first_name  := 'JOHN';  11    v_middle_name := 'J.';  12    v_last_name   := 'DOE';  13    v_name        := rtrim(v_last_name||', '||v_first_name||' '||v_middle_name);  14    d_birth_date  := to_date('19800101', 'YYYYMMDD');  15  16    begin  17      insert into employee (  18             id,  19             employee_type_id,  20             external_id,  21             first_name,  22             middle_name,  23             last_name,  24             name,  25             birth_date,  26             gender_id )  27      select 12,  28             myCursor.id,  29             lpad('12', 9, '0'),  30             v_first_name,  31             v_middle_name,  32             v_last_name,  33             v_name,  34             d_birth_date,  35             c2.id  36      from   employee_type myCursor,  37             gender c2  38      where  myCursor.code = 'C'  39      and    c2.code = 'M'  40      and not exists (  41        select 1  42        from   employee x  43        where  x.name = v_name  44        and    x.birth_date = d_birth_date  45        and    x.gender_id  = c2.id );  46  47      n_count := sql%rowcount;  48    exception  49      when OTHERS then  50        raise_application_error(-20006, SQLERRM||' on insert employee');  51    end;  52  53    DBMS_OUTPUT.PUT_LINE(to_char(n_count)||' row(s) inserted.');  54  end;  55  / 1 row(s) inserted. PL/SQL procedure successfully completed. SQL> SQL> drop table gender; Table dropped. SQL> SQL> drop table employee; Table dropped. SQL> SQL> drop table employee_type; Table dropped. SQL>