Develop PLSQL Program Units - sg3 (1-10)
Develop PLSQL Program Units - sg3 (1-10)
D17169GC30
Edition 3.0
April 2009
D59278
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Authors Copyright © 2009, Oracle. All rights reserved.
Tulika Srivastava This document contains proprietary information and is protected by copyright and
Glenn Stokol other intellectual property laws. You may copy and print this document solely for your
own use in an Oracle training course. The document may not be modified or altered in
any way. Except where your use constitutes "fair use" under copyright law, you may
Technical Contributors not use, share, download, upload, copy, print, display, perform, reproduce, publish,
license, post, transmit, or distribute this document in whole or in part without the
and Reviewers express authorization of Oracle.
Don Bates
The information contained in this document is subject to change without notice. If you
Brian Boxx find any problems in the document, please report them in writing to: Oracle University,
Dr. Christoph Burandt 500 Oracle Parkway, Redwood Shores, California 94065 USA. This document is not
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Contents
Preface
I Introduction
iii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Using IN OUT Parameters: Example 1-12
Syntax for Passing Parameters 1-13
Parameter Passing: Examples 1-14
Using the DEFAULT Option for Parameters 1-15
Summary of Parameter Modes 1-17
Invoking Procedures 1-18
Handled Exceptions 1-19
Handled Exceptions: Example 1-20
3 Creating Packages
Objectives 3-2
PL/SQL Packages: Overview 3-3
Components of a PL/SQL Package 3-4
Visibility of Package Components 3-5
Developing PL/SQL Packages 3-6
iv
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Creating the Package Specification 3-7
Example of Package Specification: comm_pkg 3-8
Creating the Package Body 3-9
Example of Package Body: comm_pkg 3-10
Invoking Package Subprograms 3-11
Creating and Using Bodiless Packages 3-12
Removing Packages 3-13
Viewing Packages in the Data Dictionary 3-14
v
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
File Processing Using the UTL_FILE Package 5-7
Exceptions in the UTL_FILE Package 5-8
FOPEN and IS_OPEN Function Parameters 5-9
Using UTL_FILE: Example 5-10
Generating Web Pages with the HTP Package 5-12
Using the HTP Package Procedures 5-13
Creating an HTML File 5-14
Using UTL_MAIL 5-15
vi
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Comparison of Native Dynamic SQL and the DBMS_SQL Package 6-17
DBMS_METADATA Package 6-18
Metadata API 6-19
Subprograms in DBMS_METADATA 6-20
FETCH_xxx Subprograms 6-21
SET_FILTER Procedure 6-22
Filters 6-23
Examples of Setting Filters 6-24
vii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
8 Managing Dependencies
Objectives 8-2
Understanding Dependencies 8-3
Dependencies 8-4
Local Dependencies 8-5
A Scenario of Local Dependencies 8-7
Displaying Direct Dependencies by Using USER_DEPENDENCIES 8-8
Displaying Direct and Indirect Dependencies 8-9
viii
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Managing BFILEs 9-13
Preparing to Use BFILEs 9-14
Populating BFILE Columns with SQL 9-15
Populating a BFILE Column with PL/SQL 9-16
Using DBMS_LOB Routines with BFILEs 9-17
Migrating from LONG to LOB 9-18
DBMS_LOB Package 9-20
DBMS_LOB.READ and DBMS_LOB.WRITE 9-23
10 Creating Triggers
Objectives 10-2
Types of Triggers 10-3
Guidelines for Designing Triggers 10-4
Creating DML Triggers 10-5
Types of DML Triggers 10-6
Trigger Timing 10-7
Trigger-Firing Sequence 10-8
Trigger Event Types and Body 10-10
Creating a DML Statement Trigger 10-11
Testing SECURE_EMP 10-12
Using Conditional Predicates 10-13
Creating a DML Row Trigger 10-14
Using OLD and NEW Qualifiers 10-15
Using OLD and NEW Qualifiers: Example Using AUDIT_EMP 10-16
Restricting a Row Trigger: Example 10-17
Summary of the Trigger Execution Model 10-18
Implementing an Integrity Constraint with a Trigger 10-19
INSTEAD OF Triggers 10-20
ix
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED
Creating an INSTEAD OF Trigger 10-21
Comparison of Database Triggers and Stored Procedures 10-24
Comparison of Database Triggers and Oracle Forms Triggers 10-25
Managing Triggers 10-26
Removing Triggers 10-27
Testing Triggers 10-28
Summary 10-29
Practice 10: Overview 10-30
x
THESE eKIT MATERIALS ARE FOR YOUR USE IN THIS CLASSROOM ONLY. COPYING eKIT MATERIALS FROM THIS
COMPUTER IS STRICTLY PROHIBITED