36
Database Application Development using PL/SQL Programming

Database Application Development using PL/SQL Programming

Embed Size (px)

Citation preview

Page 1: Database Application Development using PL/SQL Programming

Database Application Development using

PL/SQL Programming

Page 2: Database Application Development using PL/SQL Programming

PL/SQL Programming

Chapter 1. Introduction

Page 3: Database Application Development using PL/SQL Programming

PL/SQL Programming

• PL/SQL is the procedural extension to SQL with design features of programming languages.

• Data manipulation and query statements of SQL are included within procedural units of code.

Introduction to PL/SQL

Page 4: Database Application Development using PL/SQL Programming

PL/SQL Programming

PL/SQL

block

PL/SQL Environment

PL/SQLblock

ProceduralStatement executor

PL/SQL Engine

SQL statement executor

Oracle server

Page 5: Database Application Development using PL/SQL Programming

PL/SQL Programming

PL/SQL and Oracle-based Applications

Oracle applications are designed for client-server architecture.

Page 6: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Design and creation of database;• Creation of database triggers;• Building complex business rules at the

database level;• Building screens, reports for user interface

(Objects in these applications may require PL/SQL codes)

Programming in Oracle Applications

Page 7: Database Application Development using PL/SQL Programming

PL/SQL Programming

Benefits: Integration Improved performance Modularised Program Development Portability Control Structures Error Handling

Page 8: Database Application Development using PL/SQL Programming

PL/SQL Programming

Chapter 2. Declaring Variables

Page 9: Database Application Development using PL/SQL Programming

PL/SQL Programming

Recognise the basic PL/SQL block and its sections

Describe the significance of variables in PL/SQL

Distinguish between PL/SQL and non-PL/SQL variables

Declare PL/SQL variables

Execute PL/SQL blocks

Objectives

Page 10: Database Application Development using PL/SQL Programming

PL/SQL Programming

DECLARE (Optional)constantsvariablescursorsuser-defined exceptions

BEGIN (Mandatory)SQL statementsPL/SQL statements

EXCEPTION (Optional)Exception handling

END; (Mandatory)

PL/SQL Block Structure

Page 11: Database Application Development using PL/SQL Programming

PL/SQL Programming

PL/SQL Block Structure

•PL/SQL Block can have a header that goes on top of the block;

•The header specifies whether the block is a procedure, a function or a package;

• If the header is absent, the block is said to be an anonymous block.

<Block Header>DECLARE (Optional)

constantsvariablescursorsuser-defined

exceptionsBEGIN (Mandatory)

SQL statementsPL/SQL statements

EXCEPTION (Optional)Exception handling

END; (Mandatory)

Page 12: Database Application Development using PL/SQL Programming

PL/SQL Programming

DECLAREv_variable VARCHAR2(5);

BEGINSELECT column_nameINTO v_variableFROM table_name;

EXCEPTIONWHEN exception_name THEN...

END; /

Executing Statements and PL/SQL Blocks

Page 13: Database Application Development using PL/SQL Programming

PL/SQL Programming

[DECLARE]

BEGIN

-- statements

[EXCEPTION]

END;

Block Types

PROCEDURE name

IS

BEGIN

-- statements

[EXCEPTION]

END;

FUNCTION name

RETURN datatype

IS

BEGIN

--statements

RETURN value;

[EXCEPTION]

END;

Anonymous Procedure Function

Page 14: Database Application Development using PL/SQL Programming

PL/SQL Programming

Anonymous blocks

Stored procedures or functions

Application procedures or functions

Packages (Application or Stored) Database triggers (triggered by DML

statements)

Application triggers

Program Constructs

Page 15: Database Application Development using PL/SQL Programming

PL/SQL Programming

Variables can be used for:

Temporary storage of data Manipulation of stored values Reusability Ease of maintenance

Use of variables

Page 16: Database Application Development using PL/SQL Programming

PL/SQL Programming

Declare and initialise variables within the declarative section

Assign new values to variables within the executable section

Pass values into PL/SQL blocks through parameters

View results through output variables

Handling variables in PL/SQL

Page 17: Database Application Development using PL/SQL Programming

PL/SQL Programming

PL/SQL variables Scalar Composite Reference LOB (Large objects)

Non-PL/SQL variables Bind and host variables

Types of variables

Page 18: Database Application Development using PL/SQL Programming

PL/SQL Programming

TRUE represents a Boolean value. 30-MAY-78 represents a DATE. photo represents a LOB. text of a speech represents a LONG. 8523.25 represents a NUMBER. Movie represents a BFILE. “Dhaka” represents a VARCHAR2.

Examples

Page 19: Database Application Development using PL/SQL Programming

PL/SQL Programming

Syntax:

identifier [CONSTANT] datatype [NOT NULL]

[:= | DEFAULT expr];

Examples:

v_hire_date DATE;

v_department_id NUMBER(4) NOT NULL := 10;

v_city VARCHAR2(30) := ‘Sylhet’;

c_commission_pct CONSTANT NUMBER := 1400;

Declaring PL/SQL Variables

Page 20: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Follow a naming convention.

• Initialise variables designated as NOT NULL and CONSTANT.

• Declare one identifier per line.

• Initialise identifiers by using the assignment operator (:=) or the DEFAULT reserved word.

identifier := expr;

Guidelines for Declaring PL/SQL Variables

Page 21: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Two variables can have the same name, provided they are in different blocks.

• The variable name should not be the same as the name of columns of the table(s) used in the block.

• Adopt a naming convention for identifiers.For example: v_variable for a variable;

c_constant for a constant; g_message for a global (or host)

variable;

• An identifier must not be longer than 30 characters.

Naming Rules

Page 22: Database Application Development using PL/SQL Programming

PL/SQL Programming

DECLARE

employee_id NUMBER(6);

BEGIN

FROM employees

WHERE last_name = ‘Smith’;

END;

Naming Rules

SELECT employee_id

INTO employee_idBetter to avoid

Page 23: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Assignment operator (:=)• DEFAULT keyword• NOT NULL constraint

Syntax:identifier := expr;

Examples:v_hiredate := ’31-DEC-98’ ;v_mgr NUMBER(6) DEFAULT 100;v_name := ‘King’;

Variable Initialization and Keywords

Page 24: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Hold a single value• Have no internal components• Classified into four categories (they may have

sub-types)

-> number -> character -> date -> boolean

Scalar Data Types

Page 25: Database Application Development using PL/SQL Programming

PL/SQL Programming

• CHAR [(maximum_length)]• VARCHAR2 [(maximum_length)]• LONG• LONG RAW• NUMBER [(precision, scale)]• BINARY_INTEGER• PLS_INTEGER• BOOLEAN

Base Scalar Data Types

Page 26: Database Application Development using PL/SQL Programming

PL/SQL Programming

• DATE• TIMESTAMP• TIMESTAMP WITH TIME ZONE• TIMESTAMP WITH LOCAL TIME ZONE• INTERVAL YEAR TO MONTH• INTERVAL DAY TO SECOND

Base Scalar Data Types

Page 27: Database Application Development using PL/SQL Programming

PL/SQL Programming

DECLAREv_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;…

Scalar Variable Declarations

Page 28: Database Application Development using PL/SQL Programming

PL/SQL Programming

• 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

The %TYPE Attribute

Page 29: Database Application Development using PL/SQL Programming

PL/SQL Programming

Syntax:identifier Table.column_name%TYPE;

Examples:

…v_name employees.last_name%TYPE;

v_balance NUMBER(7,2);

v_min_balance v_balance%TYPE := 10;…

Declaring Variables with the %TYPE Attribute

Page 30: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Only the values TRUE, FALSE, and NULL can be assigned to a Boolean variable.

• The variables are compared 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.

Declaring Boolean Variables

v_sal1 := 50000;

v_sal2 := 60000;

v_sal1 < v_sal2

DECLARE

v_flag BOOLEAN := FALSE;

BEGIN

v_flag := TRUE;

END;

Page 31: Database Application Development using PL/SQL Programming

PL/SQL Programming

• PL/SQL TABLES• PL/SQL RECORDS

Composite Datatypes

Page 32: Database Application Development using PL/SQL Programming

PL/SQL Programming

CLOB (character large object)

– stores large blocks of single-byte character data (Book)

BLOB (binary large object)

– stores large binary objects (Photo)

BFILE (binary file)

– stores large binary objects in operating system files (Movie)

NCLOB (national language character large object)

– stores unicode data

LOB Data Type Variables

Page 33: Database Application Development using PL/SQL Programming

PL/SQL Programming

• A variable declared in a host environment.• Used to pass run-time values (character or number)

How to create? In SQL*Plus environment -

VARIABLE return_code NUMBER

VARIABLE return_message VARCHAR2(30)

How to reference in PL/SQL Block?Needs to be preceded by a colon.

:bind_variableHow to display?

PRINT bind_variable

Bind Variables

Page 34: Database Application Development using PL/SQL Programming

PL/SQL Programming

Example:

In SQL*Plus prompt, declare-

VARIABLE g_salary NUMBER

Using Bind Variables

BEGINSELECT salaryINTO :g_salaryFROM employeesWHERE employee_id = 178;

END;

Page 35: Database Application Development using PL/SQL Programming

PL/SQL Programming

• Oracle-supplied packaged procedure• An alternative for displaying data from a PL/SQL block• Needs to be enabled with SET SERVEROUTPUT ON

DBMS_OUTPUT.PUT_LINE

SET SERVEROUTPUT ONDEFINE p_annual_sal = 60000;DECLARE

v_sal NUMBER(9,2) := &p_annual_sal;BEGIN

v_sal := v_sal/12;DBMS_OUTPUT.PUT_LINE (‘Monthly salary

is ‘ || TO_CHAR(v_sal));END;

Page 36: Database Application Development using PL/SQL Programming

PL/SQL Programming

Time for

Practice 2