PU Chapter 02 Creating Procedures Scripts
PU Chapter 02 Creating Procedures Scripts
Example (pu_02_01)
PRINT g_phone_no
EXECUTE format_phone (:g_phone_no)
PRINT g_phone_no
--------------------------------------------------------------------------------------
Example (pu_02_04)
BEGIN
add_dept;
add_dept ('TRAINING', 2500);
add_dept ( p_loc => 2400, p_name =>'EDUCATION');
add_dept ( p_loc => 1200) ;
END;
--------------------------------------------------------------------------------------
SELECT object_name
FROM user_objects
WHERE object_type = 'PROCEDURE'
SELECT text
FROM user_source
WHERE name='ADD_DEPT' and type='PROCEDURE'
ORDER BY line;
--------------------------------------------------------------------------------------
PU Chapter 03 Creating Functions Scripts
Example (pu_03_01)
CREATE OR REPLACE FUNCTION get_sal
(p_id IN employees.employee_id%TYPE)
RETURN NUMBER
IS
v_salary employees.salary%TYPE :=0;
BEGIN
SELECT salary
INTO v_salary
FROM employees
WHERE employee_id = p_id;
RETURN v_salary;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN (0);
END get_sal;
SET SERVEROUTPUT ON
EXECUTE DBMS_OUTPUT.PUT_LINE(get_sal(103))
--------------------------------------------------------------------------------------
Example (pu_03_02)
CREATE OR REPLACE FUNCTION tax
(p_value IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURN (p_value * 0.08);
END tax;
--------------------------------------------------------------------------------------
Example (pu_03_03)
SELECT text
FROM user_source
WHERE name='DML_CALL_SQL' and type='FUNCTION'
ORDER BY line;
--------------------------------------------------------------------------------------
PU Chapter 4 Creating Packages Scripts
Example (pu_04_01)
PROCEDURE pro_2
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('This is the second procedure');
END pro_2;
END pu_04_01;
END comm_package;
EXECUTE comm_package.reset_comm(0.05);
EXECUTE DBMS_OUTPUT.PUT_LINE(comm_package.g_comm);
EXECUTE comm_package.reset_comm(15);
--------------------------------------------------------------------------------------
Example (pu_04_03)
SET SERVEROUTPUT ON
EXECUTE DBMS_OUTPUT.PUT_LINE('20 miles = '||20* global_consts.mile_2_kilo||' km')
--------------------------------------------------------------------------------------
Example (pu_04_04)
SELECT text
FROM user_source
WHERE name='COMM_PACKAGE' and type= 'PACKAGE'
ORDER BY line;
SELECT object_name
FROM user_objects
WHERE object_type = 'PACKAGE BODY';
SELECT text
FROM user_source
WHERE name='COMM_PACKAGE' and type= 'PACKAGE BODY'
ORDER BY line;
--------------------------------------------------------------------------------------
PU Chapter 05 Working with Package Scripts
Example (pu_05_01)
END pu_05_01;
END over_pack;
Example (pu_05_03)
SET SERVEROUTPUT ON
EXECUTE pack_cur.proc1_3rows
EXECUTE pack_cur.proc4_6rows
--------------------------------------------------------------------------------------
Example (pu_05_05)
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_05_wrap.bat
Run plb file from iSQL -- load file => pu_05_05.plb
-------------------------------------------------------------------------------------
PU Chapter 06 Oracle Supplied Packages Scripts
Example (PU_06_01)
CONN system/sys
CREATE OR REPLACE DIRECTORY my_dir AS 'c:\my_files';
GRANT READ, WRITE ON DIRECTORY my_dir TO HR;
v_olddeptno := v_newdeptno;
END LOOP;
EXCEPTION
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
RAISE_APPLICATION_ERROR (-20001, 'Invalid File.');
WHEN UTL_FILE.WRITE_ERROR THEN
RAISE_APPLICATION_ERROR (-20002, 'Unable to write to file');
END sal_status;
--RUN UTLMAIL.SQL
CREATE OR REPLACE PROCEDURE pu_06_06
IS
BEGIN
UTL_MAIL.SEND('abc@oracle.com','xya@oracle.com',
MESSAGE => 'How are you Today’,
subject => 'For you');
END pu_06_06;
-------------------------------------------------------------------------------------
Example (pu_06_07)
CREATE OR REPLACE PROCEDURE send_mail_logo
IS
BEGIN
UTL_MAIL.SEND_ATTACH_RAW (
sender => 'me@oracle.com',
recipients => 'you@somewhere.net',
MESSAGE => '<HTML><BODY> See attachment</BODY></HTML>',
subject => 'oracle Logo',
mime_type => 'text/html',
attachment => 'oracle.gif',
att_inline => true,
att_mime_type => 'image/gif',
att_filename => 'oralogo.gif');
END send_mail_logo;
-------------------------------------------------------------------------------------
Example (PU_06_08)
CREATE OR REPLACE PROCEDURE send_mail_file
IS
BEGIN
UTL_MAIL.SEND_ATTACH_VARCHAR2 (
sender => 'me@oracle.com',
recipients => 'you@somewhere.net',
MESSAGE => '<HTML><BODY> See attachment</BODY></HTML>',
subject => 'oracle Notes',
mime_type => 'text/html',
attachment => 'note_txt',
att_inline => false,
att_mime_type => 'text/plain',
att_filename => 'notes.txt');
END send_mail_file;
-------------------------------------------------------------------------------------
PU Chapter 07 Dynamic SQL and Metadata Scripts
Example (pu_07_01)
CONN SYSTEM/SYS
GRANT CREATE TABLE, UNLIMITED TABLESPACE TO HR;
EXECUTE pu_07_01('emp_2017')
-------------------------------------------------------------------------------------
Example (pu_07_02)
DECLARE
emprec employees%ROWTYPE := get_emp(100);
BEGIN
DBMS_OUTPUT.PUT_LINE('Emp: '||emprec.last_name);
END;
-------------------------------------------------------------------------------------
Example (pu_07_05)
CREATE OR REPLACE PROCEDURE list_employees(deptid NUMBER) IS
TYPE emp_refcsr IS REF CURSOR;
emp_cv emp_refcsr;
emprec employees%ROWTYPE;
stmt varchar2(200) := 'SELECT * FROM employees';
BEGIN
IF deptid IS NULL THEN
OPEN
FOR stmt;
ELSE
stmt := stmt || ' WHERE department_id = :id';
OPEN emp_cv FOR stmt USING deptid;
END IF;
LOOP
FETCH emp_cv INTO emprec;
EXIT WHEN emp_cv%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(emprec.department_id||
' ' ||emprec.last_name);
END LOOP;
CLOSE emp_cv;
END list_employees;
-------------------------------------------------------------------------------------
Example (pu_07_06)
CREATE OR REPLACE PROCEDURE delete_all_rows
(p_tab_name IN VARCHAR2)
IS
cursor_name INTEGER;
v_row_count NUMBER :=0;
BEGIN
cursor_name := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE (cursor_name, 'DELETE FROM '||p_tab_name, DBMS_SQL.NATIVE );
V_row_count := DBMS_SQL.EXECUTE (cursor_name);
DBMS_OUTPUT.PUT_LINE( v_row_count
|| ' rows are deleted from table'
||p_tab_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END delete_all_rows;
-------------------------------------------------------------------------------------
PU Chapter 08 Design Considerations for PL/SQL Code Scripts
Example (PU_08_01)
-------------------------------------------------------------------------------------
Example (PU_08_05)
EXECUTE raise_salary(10)
-------------------------------------------------------------------------------------
Example (PU_08_07)
Example (PU_09_01)
CONN system/sys
INSERT INTO hr.departments VALUES (302,'i302',112,1500);
-----------------------------------------------------------------------------
Example (PU_09_02)
-----------------------------------------------------------------------------
Example (PU_09_03)
Example (PU_09_08)
Example (PU_10_01)
CONN SYS/SYS@orcl
CONN SCOTT/TIGER
CONN SYS/SYS@orcl
CREATE TABLE log_trig_table (l_user VARCHAR2(30), l_date DATE, l_action VARCHAR2(20))
Example (PU_12_01)
-------------------------------------------------------------------------------------
Example (PU_12_02)
EXECUTE deptree_fill('TABLE','HR','EMPLOYEES');
-------------------------------------------------------------------------------------