Anda di halaman 1dari 20

Introduction to PL/SQL

Lecture 4 [Part 1]

Emma-Jane Phillips-Tait [Akhtar Ali]


Overview of next 3 sessions
 Overview of PL/SQL
 Development of a coded block
 Interacting with an Oracle Database
 Controlling PL/SQL process flow
 Cursor handling
 Error handling
Session 1
 Using PL/SQL to access Oracle
 Variable assignment
 Overview of the next 2 weeks
Re-visiting SQL
 Instructions to Oracle identifying the
information you wish to select, insert,
delete or update
 SQL*Plus is Oracle's version of the SQL
standard
 Notes on SQL are on Blackboard
PL/SQL - introduction
 Procedural extension allowing for
modularity, variable declaration, loops and
logical constructs.
 Allows for advanced error handling
 Communicates natively with other oracle
database objects.
 Managed centrally within the Oracle
database.
Other Databases
 All have procedural facilities
 SQL is not functionally complete
 Lacks full facilities of a programming language
 So top up functionality by embedding SQL in a
procedural language
 PL/SQL techniques are specific to Oracle
 but procedures and functions can be ported to other
systems
Why use PL/SQL
 Manage business rules – through middle
layer application logic.
 Generate code for triggers
 Generate code for interface
 Enable database-centric client/server
applications
Centralised V’s De-centralised
Begin Begin Begin
: : :
End; End; End;

Begin Multiple copies of


executable code on
:
the decentralised
End; system – multiple
Server
copies to maintain Server
leading to increase
difficulty in
maintaining the
Common copy of
system
executed code – one
copy to maintain
Advantages of using PL/SQL to
access Oracle
 PL/SQL is managed centrally within the database
 Code is managed by the DBA and execution
privileges are managed in the same was as with
other objects
 PL/SQL objects are first-class Oracle DB objects
 Easy to read
 With modularity features and error handling
Centralised control
 Enables DBA to:
 Specify rules in one place (as procedure,
function, package in PL/SQL)
 Force user access through the predefined
PL/SQL so users cannot write their own
procedural code and use this instead.
 Define for instance security privileges giving users
access to table(s) only through a particular
procedure
Using PL/SQL as a programming
language
 Permits all operations of standard programming
languages e.g.
 Conditions IF-THEN-ELSE-END IF;
 Jumps GOTO
 Provides loops for controlling iteration
 LOOP-EXIT; WHEN-END LOOP; FOR-END
LOOP; WHILE-END LOOP
 Allows extraction of data into variables and its
subsequent manipulation
Modules in PL/SQL
There are 4 types of modules in PL/SQL
 Procedures – series of statements may or may
not return a value
 Functions – series of statements must return a
single value
 Triggers – series of PL/SQL statements (actions)
executing after an event has triggered a condition
(ECA)
 Packages – collection of procedures and function
that has 2 parts:
 a listing and a body.
Procedures
Creation command Create or replace procedure sample1 as

Variable declarations v_num1 constant number := 2.5;


v_num2 constant number := 4;
v_product number;
BEGIN
Body of code v_product := v_num1 * v_num2;
END;
Use of Data-Types
 Number – used to store any number
 Char(size) & varchar2(size) e.g.: char(10)
– used to store alphanumerical text strings,
the char data type will pad the value stored
to the full length declared.
 Date – used to store dates
 Long – used to store large blocks of text up
to 2 gigabytes in length (limited
operations)
More data-types
 Long raw – stores large blocks of data
stored in binary format
 Raw – stores smaller blocks of data in
binary formal
 Rowid – used to store the special format of
rowid’s on the database
Non-database Data Types
 DEC, DECIMAL, REAL, INTEGER, INT – these are
numerical data types that are a subset of number.
 Binary_integer – binary format for number type but can
not be stored in database unless converted first.
 Character – same as char
 Boolean – true/false value
 Table/record – tables can be used to store the equivalent
of an array while records store the variables with
composite data types.
Using SQL in procedures
 Select values into PL/SQL variables
 using INTO
 Record.element notation will address
components of tuples (dot notation)
 %rowtype allows full rows to be selected
into one variable
V_employee employee%rowtype

Empid empname addr1 addr2 addr3 postcode grade salary


Example
Declare
v_employee employee%rowtype;
Begin
select * Selects entire row of data into 1
variable called v_employee
into v_employee
from employee
Is updating the value of
where empid = 65284; salary based on selected
element of a variable

update employee
set salary = v_employee.salary + 10000
where empid = v_employee.empid;
end
Cursor overview
 Very powerful in PL/SQL modules
 Allows more than one set of data to be
retrieved and accessed at the same time in
loops
 Sets are created by executing SQL
statements embedded in the PL/SQL code
 Cursor attributes - %notfound, %rowcount,
%found & %isopen
Error handling
 Prevents database locking
 Ensures that errors are presented to the user
in a sensible format
 Makes code robust
 Essential when using PL/SQL as formal
programming language or interfacing with
Oracle applications.

Anda mungkin juga menyukai