Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
16
Declaring Variables
16-2 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Objectives
After completing this lesson, you should
be able to do the following:
• List the benefits of PL/SQL
• Recognize the basic PL/SQL block and
its sections
• Describe the significance of variables in
PL/SQL
• Declare PL/SQL variables
• Execute a PL/SQL block
16-3 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
About PL/SQL
• PL/SQL is an extension to SQL with
design features of programming
languages.
• Data manipulation and query
statements of SQL are included within
procedural units of code.
16-4 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Benefits of PL/SQL
Integration
Application
Oracle Server
Shared
library
16-5 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Benefits of PL/SQL
Application Other DBMSs
Application
Oracle with
PL/SQL
SQL
SQL
SQL
SQL
SQL
IF...THEN
SQL
ELSE
SQL
END IF;
SQL
Improve performance
16-6 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
PL/SQL Block Structure
• DECLARE – Optional
Variables, cursors, user-defined exceptions
• BEGIN – Mandatory
– SQL statements
– PL/SQL statements
• EXCEPTION – Optional
Actions to perform when errors occur
• END; – Mandatory
DECLARE
BEGIN
EXCEPTION
END;
16-7 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
PL/SQL Block Structure
DECLARE
v_variable VARCHAR2(5);
BEGIN
SELECT column_name
INTO v_variable
FROM table_name;
EXCEPTION
WHEN exception_name THEN
...
END;
DECLARE
BEGIN
EXCEPTION
END;
16-8 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Block Types
Anonymous Procedure Function
[DECLARE]
BEGIN
--statements
[EXCEPTION]
END;
PROCEDURE name
IS
BEGIN
--statements
[EXCEPTION]
END;
FUNCTION name
RETURN datatype
IS
BEGIN
--statements
RETURN value;
[EXCEPTION]
END;
16-9 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Program Constructs
Anonymous
block
Application
trigger
Stored
procedure/
function
Database
trigger
Application
procedure/
function
Packaged
procedure/
function
DECLARE
BEGIN
EXCEPTION
END;
16-11 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Use of Variables
Use variables for:
• Temporary storage of data
• Manipulation of stored values
• Reusability
• Ease of maintenance
16-12 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Handling Variables in PL/SQL
• Declare and initialize variables in the
declaration section.
• Assign new values to variables in the
executable section.
• Pass values into PL/SQL blocks through
parameters.
• View results through output variables.
16-13 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Types of Variables
• PL/SQL variables:
– Scalar
– Composite
– Reference
– LOB (large objects)
• Non-PL/SQL variables: Bind and host
variables
16-15 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
TRUE
Types of Variables
25-OCT-99
Atlanta
“Four score and seven years ago
our fathers brought forth upon
this continent, a new nation,
conceived in LIBERTY, and dedicated
to the proposition that all men
are created equal.”
256120.08
16-16 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Declaring PL/SQL Variables
Syntax
Examples
identifier [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr];
Declare
v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_location VARCHAR2(13) := 'Atlanta';
c_comm CONSTANT NUMBER := 1400;
16-17 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Declaring PL/SQL Variables
Guidelines
• Follow naming conventions.
• Initialize variables designated as NOT
NULL and CONSTANT.
• Initialize identifiers by using the
assignment operator (:=) or the
DEFAULT reserved word.
• Declare at most one identifier per line.
16-18 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Naming Rules
• Two variables can have the same name,
provided they are in different blocks.
• The variable name (identifier) should
not be the same as the name of table
columns used in the block.
DECLARE
empno NUMBER(4);
BEGIN
SELECT empno
INTO empno
FROM emp
WHERE ename = 'SMITH';
END;
16-19 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Assigning Values to Variables
v_ename := 'Maduro';
v_hiredate := '31-DEC-98';
Syntax
Examples
Set a predefined hiredate for new
employees.
Set the employee name to Maduro.
identifier := expr;
16-20 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Variable Initialization and
Keywords
Using:
• Assignment operator (:=)
• DEFAULT keyword
• NOT NULL constraint
16-21 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Scalar Datatypes
• Hold a single value
• Have no internal components
25-OCT-99
Atlanta
“Four score and seven years
ago our fathers brought
forth upon this continent, a
new nation, conceived in
LIBERTY, and dedicated to
the proposition that all men
are created equal.”
TRUE
256120.08
16-22 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Base Scalar Datatypes
• VARCHAR2 (maximum_length)
• NUMBER [(precision, scale)]
• DATE
• CHAR [(maximum_length)]
• LONG
• LONG RAW
• BOOLEAN
• BINARY_INTEGER
• PLS_INTEGER
16-24 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Scalar Variable Declarations
v_job VARCHAR2(9);
v_count BINARY_INTEGER := 0;
v_total_sal NUMBER(9,2) := 0;
v_orderdate DATE := SYSDATE + 7;
c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
v_valid BOOLEAN NOT NULL := TRUE;
Examples
16-25 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
The %TYPE Attribute
• Declare a variable according to:
– A database column definition
– Another previously declared variable
• Prefix %TYPE with:
– The database table and column
– The previously declared variable
name
16-26 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Declaring Variables
with the %TYPE Attribute
Examples
...
v_ename emp.ename%TYPE;
v_balance NUMBER(7,2);
v_min_balance v_balance%TYPE := 10;
...
16-27 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Declaring Boolean Variables
• Only the values TRUE, FALSE, and
NULL can be assigned to a Boolean
variable.
• The variables are connected by the
logical operators AND, OR, and NOT.
• The variables always yield TRUE,
FALSE, or NULL.
• Arithmetic, character, and date
expressions can be used to return a
Boolean value.
16-28 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
1 5000
2 2345
3 12
4 3456
1 SMITH
2 JONES
3 NANCY
4 TIM
PL/SQL table structure PL/SQL table structure
BINARY_INTEGER
VARCHAR2
BINARY_INTEGER
NUMBER
PL/SQL Record Structure
TRUE 23-DEC-98 ATLANTA
16-29 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
LOB Datatype Variables
Book
(CLOB)
Photo
(BLOB)
Movie
(BFILE)
NCLOB
16-30 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Bind Variables
Server
O/S
Bind variable
16-32 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Referencing Non-PL/SQL
Variables
Store the annual salary into a SQL*Plus
host variable.
• Reference non-PL/SQL variables as
host variables.
• Prefix the references with a colon (:).
:g_monthly_sal := v_sal / 12;
16-33 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
DBMS_OUTPUT.PUT_LINE
• An Oracle-supplied packaged procedure
• An alternative for displaying data from a
PL/SQL block
• Must be enabled in SQL*Plus with
SET SERVEROUTPUT ON
16-34 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Summary
• PL/SQL blocks are composed of
the following sections:
– Declarative (optional)
– Executable (required)
– Exception handling (optional)
• A PL/SQL block can be an
anonymous block, procedure, or
function.
DECLARE
BEGIN
EXCEPTION
END;
16-35 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Summary
• PL/SQL identifiers:
– Are defined in the declarative section
– Can be of scalar, composite,
reference, or LOB datatype
– Can be based on the structure of
another variable or database object
– Can be initialized
16-36 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.
Practice Overview
• Determining validity of declarations
• Developing a simple PL/SQL block
16-40 Copyright ‫س‬ Oracle Corporation, 1999. All rights reserved.

Les16[1]Declaring Variables

  • 1.
    Copyright ‫س‬ OracleCorporation, 1999. All rights reserved. 16 Declaring Variables
  • 2.
    16-2 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Objectives After completing this lesson, you should be able to do the following: • List the benefits of PL/SQL • Recognize the basic PL/SQL block and its sections • Describe the significance of variables in PL/SQL • Declare PL/SQL variables • Execute a PL/SQL block
  • 3.
    16-3 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. About PL/SQL • PL/SQL is an extension to SQL with design features of programming languages. • Data manipulation and query statements of SQL are included within procedural units of code.
  • 4.
    16-4 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Benefits of PL/SQL Integration Application Oracle Server Shared library
  • 5.
    16-5 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Benefits of PL/SQL Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQL IF...THEN SQL ELSE SQL END IF; SQL Improve performance
  • 6.
    16-6 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. PL/SQL Block Structure • DECLARE – Optional Variables, cursors, user-defined exceptions • BEGIN – Mandatory – SQL statements – PL/SQL statements • EXCEPTION – Optional Actions to perform when errors occur • END; – Mandatory DECLARE BEGIN EXCEPTION END;
  • 7.
    16-7 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. PL/SQL Block Structure DECLARE v_variable VARCHAR2(5); BEGIN SELECT column_name INTO v_variable FROM table_name; EXCEPTION WHEN exception_name THEN ... END; DECLARE BEGIN EXCEPTION END;
  • 8.
    16-8 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Block Types Anonymous Procedure Function [DECLARE] BEGIN --statements [EXCEPTION] END; PROCEDURE name IS BEGIN --statements [EXCEPTION] END; FUNCTION name RETURN datatype IS BEGIN --statements RETURN value; [EXCEPTION] END;
  • 9.
    16-9 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Program Constructs Anonymous block Application trigger Stored procedure/ function Database trigger Application procedure/ function Packaged procedure/ function DECLARE BEGIN EXCEPTION END;
  • 10.
    16-11 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Use of Variables Use variables for: • Temporary storage of data • Manipulation of stored values • Reusability • Ease of maintenance
  • 11.
    16-12 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Handling Variables in PL/SQL • Declare and initialize variables in the declaration section. • Assign new values to variables in the executable section. • Pass values into PL/SQL blocks through parameters. • View results through output variables.
  • 12.
    16-13 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Types of Variables • PL/SQL variables: – Scalar – Composite – Reference – LOB (large objects) • Non-PL/SQL variables: Bind and host variables
  • 13.
    16-15 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. TRUE Types of Variables 25-OCT-99 Atlanta “Four score and seven years ago our fathers brought forth upon this continent, a new nation, conceived in LIBERTY, and dedicated to the proposition that all men are created equal.” 256120.08
  • 14.
    16-16 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Declaring PL/SQL Variables Syntax Examples identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]; Declare v_hiredate DATE; v_deptno NUMBER(2) NOT NULL := 10; v_location VARCHAR2(13) := 'Atlanta'; c_comm CONSTANT NUMBER := 1400;
  • 15.
    16-17 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Declaring PL/SQL Variables Guidelines • Follow naming conventions. • Initialize variables designated as NOT NULL and CONSTANT. • Initialize identifiers by using the assignment operator (:=) or the DEFAULT reserved word. • Declare at most one identifier per line.
  • 16.
    16-18 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Naming Rules • Two variables can have the same name, provided they are in different blocks. • The variable name (identifier) should not be the same as the name of table columns used in the block. DECLARE empno NUMBER(4); BEGIN SELECT empno INTO empno FROM emp WHERE ename = 'SMITH'; END;
  • 17.
    16-19 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Assigning Values to Variables v_ename := 'Maduro'; v_hiredate := '31-DEC-98'; Syntax Examples Set a predefined hiredate for new employees. Set the employee name to Maduro. identifier := expr;
  • 18.
    16-20 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Variable Initialization and Keywords Using: • Assignment operator (:=) • DEFAULT keyword • NOT NULL constraint
  • 19.
    16-21 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Scalar Datatypes • Hold a single value • Have no internal components 25-OCT-99 Atlanta “Four score and seven years ago our fathers brought forth upon this continent, a new nation, conceived in LIBERTY, and dedicated to the proposition that all men are created equal.” TRUE 256120.08
  • 20.
    16-22 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Base Scalar Datatypes • VARCHAR2 (maximum_length) • NUMBER [(precision, scale)] • DATE • CHAR [(maximum_length)] • LONG • LONG RAW • BOOLEAN • BINARY_INTEGER • PLS_INTEGER
  • 21.
    16-24 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Scalar Variable Declarations v_job VARCHAR2(9); v_count BINARY_INTEGER := 0; v_total_sal NUMBER(9,2) := 0; v_orderdate DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE; Examples
  • 22.
    16-25 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. The %TYPE Attribute • Declare a variable according to: – A database column definition – Another previously declared variable • Prefix %TYPE with: – The database table and column – The previously declared variable name
  • 23.
    16-26 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Declaring Variables with the %TYPE Attribute Examples ... v_ename emp.ename%TYPE; v_balance NUMBER(7,2); v_min_balance v_balance%TYPE := 10; ...
  • 24.
    16-27 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Declaring Boolean Variables • Only the values TRUE, FALSE, and NULL can be assigned to a Boolean variable. • The variables are connected by the logical operators AND, OR, and NOT. • The variables always yield TRUE, FALSE, or NULL. • Arithmetic, character, and date expressions can be used to return a Boolean value.
  • 25.
    16-28 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. 1 5000 2 2345 3 12 4 3456 1 SMITH 2 JONES 3 NANCY 4 TIM PL/SQL table structure PL/SQL table structure BINARY_INTEGER VARCHAR2 BINARY_INTEGER NUMBER PL/SQL Record Structure TRUE 23-DEC-98 ATLANTA
  • 26.
    16-29 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. LOB Datatype Variables Book (CLOB) Photo (BLOB) Movie (BFILE) NCLOB
  • 27.
    16-30 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Bind Variables Server O/S Bind variable
  • 28.
    16-32 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Referencing Non-PL/SQL Variables Store the annual salary into a SQL*Plus host variable. • Reference non-PL/SQL variables as host variables. • Prefix the references with a colon (:). :g_monthly_sal := v_sal / 12;
  • 29.
    16-33 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. DBMS_OUTPUT.PUT_LINE • An Oracle-supplied packaged procedure • An alternative for displaying data from a PL/SQL block • Must be enabled in SQL*Plus with SET SERVEROUTPUT ON
  • 30.
    16-34 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Summary • PL/SQL blocks are composed of the following sections: – Declarative (optional) – Executable (required) – Exception handling (optional) • A PL/SQL block can be an anonymous block, procedure, or function. DECLARE BEGIN EXCEPTION END;
  • 31.
    16-35 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Summary • PL/SQL identifiers: – Are defined in the declarative section – Can be of scalar, composite, reference, or LOB datatype – Can be based on the structure of another variable or database object – Can be initialized
  • 32.
    16-36 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved. Practice Overview • Determining validity of declarations • Developing a simple PL/SQL block
  • 33.
    16-40 Copyright ‫س‬Oracle Corporation, 1999. All rights reserved.