0% found this document useful (0 votes)
47 views3 pages

PU Chapter 05 Working With Packages Scripts

This document provides examples of working with Oracle PL/SQL packages. It demonstrates how to create packages with procedures and functions, pass parameters to procedures, define package variables and cursors, and return collections of rows from a table using a package type.

Uploaded by

pro_shad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views3 pages

PU Chapter 05 Working With Packages Scripts

This document provides examples of working with Oracle PL/SQL packages. It demonstrates how to create packages with procedures and functions, pass parameters to procedures, define package variables and cursors, and return collections of rows from a table using a package type.

Uploaded by

pro_shad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

PU Chapter 05 Working with Packages Scripts

Example (pu_05_01)

CREATE OR REPLACE PACKAGE pu_05_01


IS
PROCEDURE pro_1 (ab NUMBER);
PROCEDURE pro_1 (ab DATE);
END pu_05_01;
/

CREATE OR REPLACE PACKAGE BODY pu_05_01


IS
PROCEDURE pro_1 (ab NUMBER)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE (ab * 3.14);
END pro_1;

PROCEDURE pro_1 (ab DATE)


IS
BEGIN
DBMS_OUTPUT.PUT_LINE (ADD_MONTHS (ab,3));
END pro_1;

END pu_05_01;

EXECUTE pu_05_01.pro_1 (40);


EXECUTE pu_05_01.pro_1(sysdate)
--------------------------------------------------------------------------------------
Example (pu_05_02)

CREATE OR REPLACE PACKAGE over_pack


IS
PROCEDURE add_dept
(p_deptno IN departments.department_id%TYPE,
p_name IN departments.department_name%TYPE
DEFAULT 'unknown',
p_loc IN departments.location_id%TYPE DEFAULT 0);
PROCEDURE add_dept
(p_name IN departments.department_name%TYPE
DEFAULT 'unknown',
p_loc IN departments.location_id%TYPE DEFAULT 0);
END over_pack;
/

CREATE OR REPLACE PACKAGE BODY over_pack


IS
PROCEDURE add_dept
(p_deptno IN departments.department_id%TYPE,
p_name IN departments.department_name%TYPE DEFAULT 'unknown',
p_loc IN departments.location_id%TYPE DEFAULT 0)
IS
BEGIN
INSERT INTO departments (department_id,
department_name, location_id)
VALUES (p_deptno, p_name, p_loc);
END add_dept;
PROCEDURE add_dept
(p_name IN departments.department_name%TYPE DEFAULT 'unknown',
p_loc IN departments.location_id%TYPE DEFAULT 0)
IS
BEGIN
INSERT INTO departments (department_id,
department_name, location_id)
VALUES (departments_seq.NEXTVAL, p_name, p_loc);
END add_dept;

END over_pack;

EXECUTE over_pack.add_dept (981, 'Education ',2500)


EXECUTE over_pack.add_dept ('Training', 2400)
--------------------------------------------------------------------------------------

Example (pu_05_03)

CREATE OR REPLACE PACKAGE taxes_pack


IS
FUNCTION tax (p_value IN NUMBER) RETURN NUMBER;
END taxes_pack;
/

CREATE OR REPLACE PACKAGE BODY taxes_pack


IS
FUNCTION tax (p_value IN NUMBER) RETURN NUMBER
IS
v_rate NUMBER := 0.08;
BEGIN
RETURN (p_value * v_rate);
END tax;
END taxes_pack;

SELECT taxes_pack.tax(salary), salary, last_name


FROM employees;
--------------------------------------------------------------------------------------
Example (pu_05_04)

CREATE OR REPLACE PACKAGE pack_cur


IS
CURSOR c1 IS
SELECT employee_id
FROM employees
ORDER BY employee_id DESC;
PROCEDURE proc1_3rows;
PROCEDURE proc4_6rows;
END pack_cur;
/

CREATE OR REPLACE PACKAGE BODY pack_cur


IS
v_empno NUMBER;
PROCEDURE proc1_3rows
IS
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_empno;
DBMS_OUTPUT.PUT_LINE('Id :' ||(v_empno));
EXIT WHEN c1%ROWCOUNT >= 3;
END LOOP;
END proc1_3rows;
PROCEDURE proc4_6rows
IS
BEGIN
LOOP
FETCH c1 INTO v_empno;
DBMS_OUTPUT.PUT_LINE('Id :' ||(v_empno));
EXIT WHEN c1%ROWCOUNT >= 6;
END LOOP;
CLOSE c1;
END proc4_6rows;
END pack_cur;

SET SERVEROUTPUT ON
EXECUTE pack_cur.proc1_3rows
EXECUTE pack_cur.proc4_6rows
--------------------------------------------------------------------------------------
Example (pu_05_05)

CREATE OR REPLACE PACKAGE emp_package IS


TYPE emp_table_type IS TABLE OF employees%ROWTYPE
INDEX BY BINARY_INTEGER;
emp_table emp_table_type;
PROCEDURE read_emp_table
(p_emp_table OUT emp_table_type);
END emp_package;
/

CREATE OR REPLACE PACKAGE BODY emp_package IS


PROCEDURE read_emp_table
(p_emp_table OUT emp_table_type) IS
i BINARY_INTEGER := 1;
BEGIN
FOR emp_record IN (SELECT * FROM employees)LOOP
p_emp_table(i) := emp_record;
i:= i+1;
END LOOP;
END read_emp_table;
END emp_package;

DECLARE
v_emp_table emp_package.emp_table_type;
BEGIN
emp_package.read_emp_table(v_emp_table);
DBMS_OUTPUT.PUT_LINE('An example: '||v_emp_table(4).last_name);
END;
-------------------------------------------------------------------------------------
wrap iname=pu_05_05.sql -- see demo_54_wrap.bat
Run plb file from iSQL -- load file => pu_05_05.plb
-------------------------------------------------------------------------------------

You might also like