0% found this document useful (0 votes)
180 views

Advanced PL SQL Concepts

This document provides an overview of advanced SQL and PL/SQL topics in Oracle9i, including indexes, stored program units like procedures and functions, packages, and triggers. It discusses how to create, use, call, and debug these different program units. Indexes are described as improving query performance by indexing columns, while stored program units allow reusable code to be stored in the database. Packages provide a way to organize related procedures and functions, and triggers allow code to automatically execute in response to data changes.

Uploaded by

OraAppsAdmin
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
180 views

Advanced PL SQL Concepts

This document provides an overview of advanced SQL and PL/SQL topics in Oracle9i, including indexes, stored program units like procedures and functions, packages, and triggers. It discusses how to create, use, call, and debug these different program units. Indexes are described as improving query performance by indexing columns, while stored program units allow reusable code to be stored in the database. Packages provide a way to organize related procedures and functions, and triggers allow code to automatically execute in response to data changes.

Uploaded by

OraAppsAdmin
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 52

Advanced SQL And PL/SQL Topics

Chapter 9

A Guide to Oracle9i

Lesson A Objectives
Learn how to create and use indexes Become familiar with PL/SQL stored program units Learn how to create server-side stored program units in SQL*Plus Learn how to use Forms Builder to create stored program units

A Guide to Oracle9i

Database Indexes
Similar to an index in a book Table with list of sorted data values and corresponding physical location Used to speed searches Uses ROWID column to represent physical location Primary key indexed automatically Unlimited number allowed, but more indexes means more processing time for action queries (insert, update, delete)
A Guide to Oracle9i 3

Creating an Index
Create index after table data is loaded CREATE INDEX index_name ON tablename (index_fieldname); Convention for naming index: tablename_fieldname.

A Guide to Oracle9i

Composite Index
Contains multiple (up to 16) sorted columns Used for queries with multiple search conditions CREATE INDEX index_name ON tablename(index_fieldname1, index_fieldname2, );

A Guide to Oracle9i

Viewing Index Information


Use data dictionary view USER_INDEXES

A Guide to Oracle9i

Dropping an Index
If an index is no longer needed or does not improve performance, delete it DROP INDEX index_name;

A Guide to Oracle9i

Use an Index When


Table contains a large number of records (a rule of thumb is that a large table contains over 100,000 records) The field contains a wide range of values The field contains a large number of NULL values Application queries frequently use the field in a search condition or join condition Most queries retrieve less than 2% to 4% of the table rows
A Guide to Oracle9i 8

Do Not Use an Index When


The table does not contain a large number of records Applications do not use the proposed index field in a query search condition Most queries retrieve more than 2% to 4% of the table records Applications frequently insert or modify table data

A Guide to Oracle9i

Overview of PL/SQL Stored Program Units


Self-contained group of program statements that can be used within a larger program. Easier to conceptualize, design, and debug Save valuable programming time because you can reuse them in multiple database applications Other PL/SQL programs can reference them

A Guide to Oracle9i

10

Overview of PL/SQL Stored Program Units


Server-side program units stored in the database as database objects and execute on the database server Client-side program units stored in the file system of the client workstation and execute on the client workstation

A Guide to Oracle9i

11

Types of Program Units

A Guide to Oracle9i

12

Creating Stored Program Units


Procedure: a program unit that can receive multiple input parameters and return multiple output values or return no output values Function: a program unit that can receive multiple input parameters, and always returns a single output value.

A Guide to Oracle9i

13

Parameter Declarations List


Defines the parameters and declares their associated data types Enclosed in parentheses Separated by commas

A Guide to Oracle9i

14

Parameter Declarations List


Parameter mode describes how the program unit can change the parameter value:
IN - specifies a parameter that is passed to the program unit as a read-only value that the program unit cannot change. OUT - specifies a parameter that is a write-only value that can appear only on the left side of an assignment statement in the program unit IN OUT - specifies a parameter that is passed to the program unit, and whose value can also be changed within the program unit

A Guide to Oracle9i

15

Creating a Stored Procedure in SQL*Plus

A Guide to Oracle9i

16

Debugging Stored Program Units in SQL*Plus

A Guide to Oracle9i

17

Debugging Stored Program Units in SQL*Plus

A Guide to Oracle9i

18

Calling a Stored Procedure


From SQL*Plus command line:
EXECUTE procedure_name (parameter1_value, parameter2_value, ...);

From PL/SQL program:


Omit execute command

Passing parameters (see Figure 9-13)

A Guide to Oracle9i

19

Creating a Stored Program Unit Function

A Guide to Oracle9i

20

Creating a Stored Program Unit Function


Last command in function must be RETURN

A Guide to Oracle9i

21

Calling a Function
variable_name := function_name(parameter1, parameter2, ...);

A Guide to Oracle9i

22

Using Forms Builder to Create Stored Procedures and Functions


Create and test the program unit within a form Save it as a stored program unit in your database schema Provides an enhanced development and debugging environment:
Color-coded editor for entering and debugging program unit commands Displays compile error messages immediately Use the Forms Debugger to step through program unit commands and view how variable values change
A Guide to Oracle9i 23

Using Forms Builder to Create Stored Procedures and Functions


Create the procedure or function as a form program unit Test and debug the form program unit by calling it from commands within a form trigger Save the form program unit as a stored program unit in the database

A Guide to Oracle9i

24

Lesson B Objectives
Learn how to call stored procedures from other stored procedures and pass parameter values Create libraries Create packages Create database triggers

A Guide to Oracle9i

25

Calling Stored Program Units from Other Stored Program Units


Decompose applications into logical units of work and then write individual program units for each logical unit Code is in a single location Developers do not need to rewrite program units that already exist References procedures must be declared first

A Guide to Oracle9i

26

PL/SQL Libraries
Operating system file that contains code for multiple related procedures and functions Attach a PL/SQL library to a form or report
Triggers within the form or report reference librarys procedures and functions

Store a PL/SQL library in the file system of the client workstation .pll extension - stands for PL/SQL Library Compile the library into a library executable file - .plx extension - stands for PL/SQL Library Executable Library places the commands for multiple related program units in a single location that developers can access and use A Guide to Oracle9i 27

Creating a PL/SQL Library


Use Forms Builder to create libraries Add form program units and stored program units to the library.

A Guide to Oracle9i

28

Packages
Another way to make PL/SQL program units available to multiple applications A code library that contains related program units and variables Stored in the database and executes on the database server Have more functionality than PL/SQL libraries:
Can create variables in packages Definitions for explicit cursors More convenient to use than PL/SQL libraries Available without explicitly attaching them to a form or report
A Guide to Oracle9i 29

Package Specification
Also called package header Declares package objects, including variables, cursors, procedures, and functions, Use to declare public variables:
Remain in memory after the programs that declare and reference them terminate Declared in the DECLARE section of a package Referenced same as private variables
A Guide to Oracle9i 30

Package Specification

A Guide to Oracle9i

31

Package Header
Package_name identifies the package
Must adhere to the Oracle Naming Standard

Declare the package objects in any order Package can consist of just variable declarations, or it can consist of just procedure or function declarations

A Guide to Oracle9i

32

Procedure and Function Declarations


Declare a procedure:
PROCEDURE procedure_name

(parameter1 parameter1_data_type, parameter2 parameter2_data_type, ...); Declare a function:


FUNCTION function_name (parameter1 parameter1_data_type, parameter2 parameter2_data_type, ...) RETURN return_datatype;

A Guide to Oracle9i

33

Package Body
Contains the implementation of declared procedures and functions Specification comes before body Optional: sometimes a package contains only variable or cursor declarations, and no procedure or function declarations See Figure 9-35 for general syntax

A Guide to Oracle9i

34

Package Body
Package_name in the package body must be the same as package_name in the package specification Variables that you declare at the beginning of the package body are private to the package Each package program unit has its own declaration section and BEGIN and END statements Each program unit declared in the package body must have a matching program unit forward declaration in the package specification, with an identical parameter list
A Guide to Oracle9i 35

Creating a Package Header in SQL*Plus

A Guide to Oracle9i

36

Creating a Package Body in SQL*Plus

A Guide to Oracle9i

37

Using Package Objects


Must preface the item with the package name:
package_name.item_name.

To grant other users the privilege to execute a package:


GRANT EXECUTE ON package_name TO username;

A Guide to Oracle9i

38

Creating a Package in Forms Builder


Create a program unit of type Package Spec Type the package specification in the PL/SQL editor Create a program unit of type Package Body Type package body in the PL/SQL editor Compile package body and test using a form trigger Save the package in the database for future use

A Guide to Oracle9i

39

Database Triggers
Program units that execute in response to the database events of inserting, updating, or deleting a record Different from form triggers Useful for maintaining integrity constraints and audit information Cannot accept input parameters Executes only when its triggering event occurs

A Guide to Oracle9i

40

Trigger Properties
Trigger timing:
Defines whether a trigger fires before or after the SQL statement executes Can have the values BEFORE or AFTER

Trigger statement:
Defines the type of SQL statement that causes a trigger to fire Can be INSERT, UPDATE, or DELETE

A Guide to Oracle9i

41

Trigger Properties
Trigger level:
Defines whether a trigger fires once for each triggering statement or once for each row affected by the triggering statement Can have the values ROW or STATEMENT Statement-level triggers fire once, either before or after the SQL triggering statement executes. Row-level triggers fire once for each row affected by the triggering statement

Use :OLD.fieldname to reference previous value Use :NEW.fieldname to reference changed value
A Guide to Oracle9i 42

Creating Database Triggers

A Guide to Oracle9i

43

Database Trigger Header


Trigger_name must follow Oracle Naming Standard Join statement types using the OR operator to fire for multiple statement types (INSERT OR UPDATE) WHEN (condition) clause:
Trigger will fire only for rows that satisfy a specific search condition WHEN OLD.grade IS NOT NULL;

A Guide to Oracle9i

44

Database Trigger Body


Contains the commands that execute when the trigger fires PL/SQL code block that contains the usual declaration, body, and exception sections Cannot contain transaction control statements Reference the NEW and OLD field values only in a row-level trigger

A Guide to Oracle9i

45

Trigger Use Audit Trail

A Guide to Oracle9i

46

Creating Audit Trigger in SQL*Plus

A Guide to Oracle9i

47

Creating a Database Trigger in Forms Builder


Use the Database Trigger Dialog Box to specify trigger properties Type trigger body into Trigger Body entry field

A Guide to Oracle9i

48

Disabling and Dropping Triggers


To remove a trigger:
DROP TRIGGER trigger_name;

To disable/enable a trigger:
ALTER TRIGGER trigger_name [ENABLE | DISABLE];

A Guide to Oracle9i

49

Viewing Trigger Information

A Guide to Oracle9i

50

Summary
Database indexes store an ordered list of field values with corresponding ROWID Indexes are used to speed query performance Stored program units are named PL/SQL blocks that are saved Procedures accept parameters and return 0,1, or many values Functions accept parameters and return exactly one value
A Guide to Oracle9i 51

Summary
PL/SQL Library is a client-side file containing procedures and functions PL/SQL Package is a collection of public variables, cursors, procedures and functions stored in the DBMS Database triggers are PL/SQL blocks that are run in response to table changes Database triggers are used to enforce integrity constraints and track changes Forms Builder may be used as an IDE to develop functions, procedures, libraries, packages and triggers
A Guide to Oracle9i 52

You might also like