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 not null,
3 code varchar2(30) not null,
4 description varchar2(80) not null,
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 not null,
3 code varchar2(30) not null,
4 description varchar2(80) not null,
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 n_id employee.id%TYPE;
3 n_employee_type_id employee.employee_type_id%TYPE;
4 v_external_id employee.external_id%TYPE;
5 n_gender_id employee.gender_id%TYPE;
6 n_count number;
7 begin
8 begin
9 select id into n_employee_type_id from employee_type where code = 'C';
10 exception
11 when OTHERS then
12 raise_application_error(-20002, SQLERRM||' on select employee_type'||' in filename insert.sql');
13 end;
14 begin
15 select id into n_gender_id from gender where code = 'M';
16 exception
17 when OTHERS then
18 raise_application_error(-20004, SQLERRM||' on select gender'||' in filename insert.sql');
19 end;
20
21 begin
22 select 12 into n_id from SYS.DUAL;
23 exception
24 when OTHERS then
25 raise_application_error(-20001, SQLERRM||' on select 12'||' in filename insert.sql');
26 end;
27
28 begin
29 select lpad(to_char('12'), 9, '0') into v_external_id from SYS.DUAL;
30 exception
31 when OTHERS then
32 raise_application_error(-20003, SQLERRM||' on select 12'||' in filename insert.sql');
33 end;
34
35 begin
36 insert into employee (
37 id,
38 employee_type_id,
39 external_id,
40 first_name,
41 middle_name,
42 last_name,
43 name,
44 birth_date,
45 gender_id )
46 values (
47 n_id,
48 n_employee_type_id,
49 v_external_id,
50 'JOHN',
51 'J.',
52 'DOE',
53 'AAA J.',
54 to_date('19800101', 'YYYYMMDD'),
55 n_gender_id );
56
57 n_count := sql%rowcount;
58 exception
59 when OTHERS then
60 raise_application_error(-20005, SQLERRM||' on insert employee'||' in filename insert.sql');
61 end;
62
63 DBMS_OUTPUT.PUT_LINE(to_char(n_count)||' row(s) inserted.');
64 end;
65 /
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>