A package to manage a list of employees
SQL>
SQL> CREATE TABLE employee(
2 emp_id INTEGER,
3 emp_name VARCHAR2(32),
4 supervised_by INTEGER,
5 pay_rate NUMBER(9,2),
6 pay_type CHAR);
Table created.
SQL>
SQL> CREATE TABLE department
2 (dept_id INTEGER,
3 dept_name VARCHAR2(32));
Table created.
SQL>
SQL> CREATE TABLE emp_dept (emp_id INTEGER, dept_id INTEGER);
Table created.
SQL>
SQL>
SQL> CREATE OR REPLACE package emp_dept_procs AS
2 PROCEDURE init_list;
3 PROCEDURE add_to_list (emp_id IN emp_dept.emp_id%TYPE,dept_id IN emp_dept.dept_id%TYPE);
4 FUNCTION get_count RETURN NUMBER;
5 PROCEDURE get_from_list (to_get IN BINARY_INTEGER,emp_id OUT emp_dept.emp_id%TYPE,dept_id OUT emp_dept.dept_id%TYPE);
6 END emp_dept_procs;
7 /
Package created.
SQL>
SQL> CREATE OR REPLACE package body emp_dept_procs AS
2 listx BINARY_INTEGER;
3 TYPE emp_dept_pk IS RECORD (emp_id emp_dept.emp_id%TYPE,dept_id emp_dept.dept_id%TYPE);
4 TYPE emp_dept_list_type IS TABLE OF emp_dept_pk INDEX BY BINARY_INTEGER;
5
6 emp_dept_list emp_dept_list_type;
7
8 PROCEDURE init_list is
9 BEGIN
10 listx := 0;
11 END;
12
13 PROCEDURE add_to_list (emp_id IN emp_dept.emp_id%TYPE ,dept_id IN emp_dept.dept_id%TYPE) IS
14 BEGIN
15 listx := listx + 1;
16 emp_dept_list(listx).emp_id := emp_id;
17 emp_dept_list(listx).dept_id := dept_id;
18 END;
19
20 FUNCTION get_count RETURN NUMBER IS
21 BEGIN
22 RETURN listx;
23 END;
24
25 PROCEDURE get_from_list (to_get IN BINARY_INTEGER ,emp_id OUT emp_dept.emp_id%TYPE ,dept_id OUT emp_dept.dept_id%TYPE) IS
26 BEGIN
27 emp_id := emp_dept_list(to_get).emp_id;
28 dept_id := emp_dept_list(to_get).dept_id;
29 END;
30
31 END emp_dept_procs;
32 /
Package body created.
SQL>
SQL> drop table department;
Table dropped.
SQL> drop table employee;
Table dropped.
SQL> --
Related examples in the same category