Introduction To PL/SQL
Introduction To PL/SQL
1
What is PL/SQL?
Procedural programming language
Uses detailed instructions
Processes statements sequentially
Combines SQL commands with
procedural instructions
Used to perform sequential
processing using an Oracle
database
2
PL/SQL Advantage
3
PL/SQL Variables
Variable names must follow the Oracle
naming standard
Can use reserved words (BEGIN, NUMBER) and
table names for variable names, but is not a good
practice
Make variable names descriptive
Use lower-case letters, and separate words
with underscores
Example: current_s_id
4
Declaring PL/SQL Variables
PL/SQL is a strongly-typed language
All variables must be declared prior to use
Syntax for declaring a variable:
variable_name data_type_declaration;
Example:
current_s_id NUMBER(6);
5
PL/SQL Data Types
Scalar
References a single value
Composite
References a data structure
Reference
References a specific database item
LOB
References a large binary object
6
Scalar Data Types
Database scalar data types:
VARCHAR2
CHAR
DATE
LONG
NUMBER
Non-database scalar data types:
Integers: BINARY_INTEGER, INTEGER, INT, SMALLINT
Decimal numbers: DEC, DECIMAL, DOUBLE,
PRECISION, NUMERIC, REAL
BOOLEAN
7
Composite Data Types
Reference multiple data elements, such
as a record
Types:
RECORD
TABLE
VARRAY
Tabular structure that can expand or contract
as needed
8
Reference Data Types
Reference a database item
Assume data type of item
%TYPE: assumes data type of field
%ROWTYPE: assumes data type of entire
row
9
PL/SQL Program Structure
DECLARE Variable
Variable
Variable declarations Declarations
Declarations
BEGIN
Body
Program statements Body
EXCEPTION
Error-handling statements Exception
Exception
Section
Section
END;
10
PL/SQL Program Lines
May span multiple text editor lines
11
Comment Statements
Block of comments are delimited with /*
*/
** Exponentiation 2 ** 3 8
* Multiplication 2*3 6
/ Division 9/2 4.5
+ Addition 3+2 5
- Subtraction 3–2 1
- Negation -5 Negative 5
13
Assignment Statements
Assignment operator: :=
Variable being assigned to a new value
is on left side of assignment operator
New value is on right side of operator
14
Displaying PL/SQL Output
in SQL*Plus
Normally PL/SQL is used with other Oracle
utilities such as forms or reports
You will learn to use PL/SQL in SQL*Plus
Command to activate memory buffer in
SQL*Plus to enable output from PL/SQL
programs:
SQL> SET SERVEROUTPUT ON SIZE buffer_size;
15
Displaying PL/SQL Program
Output in SQL*Plus
Command to output data from a PL/SQL
program in SQL*Plus:
DBMS_OUTPUT.PUT_LINE(‘output string’);
DBMS_OUTPUT.PUT_LINE(‘Current Output:’);
16
Executing a PL/SQL Program
in SQL*Plus
Copy program code from Notepad to
SQL*Plus
Type / to execute
17
PL/SQL Data Type Conversion
Functions
TO_DATE: character string to DATE
TO_DATE(‘07/14/01’, ‘MM/DD/YY’);
TO_NUMBER: character string to NUMBER
TO_NUMBER(‘2’);
TO_CHAR: NUMBER or DATE to character string
TO_CHAR(2);
TO_CHAR(SYSDATE, ‘MM/DD/YYYY HH:MI’);
18
Character String Functions
Concatenating strings: joining 2 or more
character strings into a single string
Concatenation operator: ||
s_first_name := ‘BScIT’
s_last_name := ‘MScIT’
s_full_name := s_first_name || ‘ ’
|| s_last_name
19
PL/SQL Character String
Functions
RTRIM: removes blank trailing spaces
cust_address := RTRIM(cust_address);
LENGTH: returns string length (number of
characters)
address_length := LENGTH(cust_address);
UPPER, LOWER: changes characters to all upper
or lower case
s_name := UPPER(s_name);
s_name := LOWER(s_name);
20
PL/SQL Character String
Functions
INSTR: searches a string and looks for a
matching substring and returns its starting
position
starting_position :=
INSTR(string_being_searched,
search_string>);
blank_position :=
INSTR(‘Sarah Miller’, ‘ ’);
21
PL/SQL Character String
Functions
SUBSTR: extracts a specific number of
characters from a string, starting at a given
point
extracted_string :=
SUBSTR(string_being_searched,
starting_point,
number_of_characters_to_extract);
22
NULL Values in Assignment
Statements
Until a value is assigned to a variable,
the variable’s value is NULL
Performing an arithmetic value on a
NULL value always results in a NULL
value
23
PL/SQL
IF/THEN
Selection Structures
IF/END IF:
IF condition THEN
program statements
END IF;
IF/ELSE/END IF:
IF condition THEN
program statements
ELSE
alternate program statements
END IF;
24
PL/SQL Selection Structures
IF/ELSIF:
IF condition1 THEN
program statements;
ELSIF condition2 THEN
alternate program statements;
ELSIF condition3 THEN
alternate program statements;
. . .
ELSE
alternate program statements;
END IF;
25
PL/SQL Comparison Operators
Operator Description Example
= Equal Count = 5
<>, != Not Equal Count <> 5
> Greater Than Count > 5
< Less Than Count < 5
>= Greater Than or Equal Count >= 5
To
<= Less Than or Equal To Count <= 5
26
Evaluating NULL Conditions in
IF/THEN Structures
If a condition evaluates as NULL, then it
is FALSE
How can a condition evaluate as NULL?
It uses a BOOLEAN variable that has not
been initialized
It uses any other variable that has not
been initialized
27
Using SQL Commands in
PL/SQL Programs
SQL Command Purpose Examples Can be
Category used in
PL/SQL
Data Definition Change CREATE, No
Language (DDL) database ALTER,
structure GRANT,
REVOKE
Data View or change SELECT, Yes
Manipulation data INSERT,
Language (DML) UPDATE,
DELETE
Transaction Create logical COMMIT, Yes
Control transactions ROLLBACK
28
PL/SQL Loops
Loop: repeats one or more program
statements multiple times until an exit
condition is reached
Pretest loop: exit condition is tested
before program statements are executed
Posttest loop: exit condition is tested after
program statements are executed
29
LOOP … EXIT Loop
LOOP … EXIT
LOOP
program statements
IF condition THEN Pretest
Pretest
EXIT; OR
OR
END IF; Posttest
Posttest
more program statements
END LOOP;
30
LOOP … EXIT WHEN Loop
LOOP
program statements Posttest
Posttest
EXIT WHEN condition;
END LOOP;
31
WHILE Loop
WHILE condition
LOOP Pretest
Pretest
program statements
END LOOP;
WHILE … LOOP
32
Numeric FOR Loop
FOR counter_variable
IN start_value .. end_value
LOOP
Preset
Preset
program statements
number
numberof of
END LOOP;
iterations
iterations
33