You are on page 1of 33

Synapseindia Reviews on Advanced

SQL And
PL/SQL Topics-Part 2

Creating a Stored
Program Unit Function
Last command in function must be RETURN

Calling a Function
variable_name := function_name(parameter1,

parameter2, ...);

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
4

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

Lesson B Objectives
Learn how to call stored procedures from

other stored procedures and pass


parameter values
Create libraries
Create packages
Create database triggers

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

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

Creating a PL/SQL Library


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

units to the library.

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
10

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

11

declare and reference them terminate


Declared in the DECLARE section of a
package
Referenced same as private variables

Package Specification

12

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

13

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;
14

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
15

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
16

Creating a Package Header in


SQL*Plus

17

Creating a Package Body in


SQL*Plus

18

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;

19

Creating a Package in Forms Builder


Create a program unit of type Package Spec
Type the package specification in the

20

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

Database Triggers
Program units that execute in response to

21

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

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

22

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
23

Creating Database Triggers

24

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;
25

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

26

Trigger Use Audit Trail

27

Creating Audit Trigger in SQL*Plus

28

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

29

Disabling and Dropping Triggers


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

30

Viewing Trigger Information

31

Summary
Database indexes store an ordered list of field

32

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

Summary
PL/SQL Library is a client-side file containing

33

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

You might also like