Introduction To PL/SQL Lecture 4 (Part 1) : Emma-Jane Phillips-Tait (Akhtar Ali)
Introduction To PL/SQL Lecture 4 (Part 1) : Emma-Jane Phillips-Tait (Akhtar Ali)
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
So top up functionality by embedding SQL in a procedural language PL/SQL techniques are specific to Oracle
Manage business rules through middle layer application logic. Generate code for triggers Generate code for interface Enable database-centric client/server applications
Centralised Vs De-centralised
Begin : End; Begin : End; Begin : End;
Begin
: End;
Server
Multiple copies of executable code on the decentralised system multiple copies to maintain leading to increase difficulty in maintaining the system
Server
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
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
Conditions IF-THEN-ELSE-END IF; Jumps GOTO LOOP-EXIT; WHEN-END LOOP; FOR-END LOOP; WHILE-END LOOP
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 Variable declarations Body of code
Create or replace procedure sample1 as
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 rowids on the database
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.
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
empname addr1 addr2 addr3 postcode grade salary
V_employee employee%rowtype
Empid
Example
Declare v_employee Begin select * into v_employee from employee
Selects entire row of data into 1 variable called v_employee
employee%rowtype;
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.