Académique Documents
Professionnel Documents
Culture Documents
Tell Me/Show Me
PL/SQL Block Structure
A PL/SQL block consists of three sections:
Declarative (optional): The declarative section begins with the
keyword DECLARE and ends when your executable section starts.
Executable (mandatory): The executable section begins with the
keyword BEGIN and ends with END. Observe that END is terminated
with a semicolon. The executable section of a PL/SQL block can in
turn include any number of nested PL/SQL blocks.
Exception handling (optional): The exception section is nested
within the executable section. This section begins with the keyword
EXCEPTION.
Tell Me/Show Me
PL/SQL Block Structure (continued)
DECLARE (Optional)
Variables, cursors, user-defined exceptions
BEGIN (Mandatory)
- SQL statements
- PL/SQL statements
EXCEPTION (Optional)
Actions to perform
when errors occur
END; (Mandatory)
In a PL/SQL block, the keywords DECLARE, BEGIN, and
EXCEPTION are not terminated by a semicolon. However, the
keyword END, all SQL statements, and PL/SQL statements must
be terminated with a semicolon.
Copyright 2007, Oracle. All rights reserved.
Tell Me/Show Me
PL/SQL Block Structure (continued)
Section
Description
Declarative
(DECLARE)
Inclusion
Optional
(BEGIN
END;)
Mandatory
(EXCEPTION)
Optional
executable section.
Copyright 2007, Oracle. All rights reserved.
Tell Me/Show Me
The PL/SQL Compiler
Every program written in a high-level programming language (C,
Java, PL/SQL and so on) must be checked and translated into
binary code (ones and zeros) before it can execute. The
software that does this checking and translation is called a
compiler.
The PL/SQL compiler executes automatically when needed. It
checks not only that every word is spelled correctly, but also that
any referenced database objects (such as tables) exist, and that
the user has the necessary privileges on them.
Tell Me/Show Me
Block Types
A PL/SQL program comprises one or more blocks. These blocks
can be entirely separate or nested within another.
There are three types of blocks that can make up a PL/SQL
program. They are:
Anonymous blocks
Procedures
Functions
Subprograms
Tell Me/Show Me
Anonymous Blocks
Anonymous blocks:
Unnamed blocks
Not stored in the database
Declared inline at the point in an
application where they are executed
Compiled each time the application is
executed
Passed to the PL/SQL engine for
execution at run time
We cannot invoke or call an
anonymous block because they do not
have names and do not exist after they
are executed
Copyright 2007, Oracle. All rights reserved.
[DECLARE]
BEGIN
--statements
[EXCEPTION]
END;
Tell Me/Show Me
Examples of Anonymous Blocks
1. No Declaration or exception sections, execution only
BEGIN
DBMS_OUTPUT.PUT_LINE('PL/SQL is easy!');
END;
10
Tell Me/Show Me
Examples of Anonymous Blocks
3. Declaration and exception sections
DECLARE
v_country_name VARCHAR2(15);
v_location
VARCHAR2(15);
BEGIN
SELECT country_name, location
INTO v_country_name, v_location
FROM countries WHERE country_id=?;
DBMS_OUTPUT.PUT_LINE ('The country name is:
'||v_country_name)||' and is located in
'||v_location||'.') ;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE (' Your select statement retrieved
multiple rows. Consider using a cursor.');
END;
Copyright 2007, Oracle. All rights reserved.
11
Tell Me/Show Me
Subprograms
Subprograms:
Are named PL/SQL blocks
Are stored in the database
Can be invoked whenever you
want to depending on your
application
Can be declared as procedures
or as functions
Procedure: performs an action
Function: computes and returns
a value
PROCEDURE name
IS
--variable declaration(s)
BEGIN
--statements
[EXCEPTION]
END;
FUNCTION name
RETURN datatype
--variable declaration(s)
IS
BEGIN
--statements
RETURN value;
[EXCEPTION]
END;
12
Tell Me/Show Me
Examples of Subprograms:
1. Procedure to print the current date
CREATE PROCEDURE print_date IS
v_date VARCHAR2(30);
BEGIN
SELECT TO_CHAR(SYSDATE,'Mon DD, YYYY')
INTO v_date
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(v_date);
END;
13
Tell Me/Show Me
Program Constructs
The following table outlines a variety of different PL/SQL program
constructs that use the basic PL/SQL block. The constructs are
available based on the environment in which they are executed.
Application packages
Database Server
Constructs
Stored procedures or
functions
Stored packages
Database triggers
Application triggers
Object types
Tools Constructs
Anonymous blocks
Application procedures
or functions
Object types
14
Tell Me / Show Me
PL/SQL Programming Environments
There are many tools that provide an environment for developing
PL/SQL code. Oracle provides several tools that can be used to
write PL/SQL code. Some of the Oracle development tools are:
SQL*Workshop
A component of Application
Express
SQL*Plus
A command-line application
Jdeveloper &
SQL Developer
iSQL*Plus
15
Tell Me / Show Me
PL/SQL Programming Environments: iSQL*Plus
iSQL*Plus: iSQL*Plus is a browser-based interface to SQL*Plus.
You can connect to a local or remote database by using
iSQL*Plus. It allows you to perform all the operations that you
can perform with the command-line version of SQL*Plus.
16
Tell Me/Show Me
PL/SQL Programming
Environments: Oracle JDeveloper
JDeveloper is a Windows-based
application.
Using JDeveloper you can create,
edit, test, and debug PL/SQL.
The JDeveloper Code Editor assists
in PL/SQL code development by
offering:
Different colors for syntactical
components of the PL/SQL
language
Features to locate procedures
and functions in supplied
packages
Copyright 2007, Oracle. All rights reserved.
Edit
Run
17
Tell Me/Show Me
PL/SQL Programming Environments: Oracle Application
Express
Oracle Application Express is a browser-based web application
environment that offers a SQL Workshop component.
18
Tell Me/Show Me
Developing with SQL Workshop
When you log in to Oracle Application Express, and choose SQL
Workshop, you can choose to use the SQL Commands option to
use the SQL command line editor or you can choose the SQL
Scripts option to work within the Script Editor.
19
Tell Me/Show Me
SQL Commands
You can use SQL
Commands to enter and
run a single SQL
statement or a single
PL/SQL block.
A SQL script can contain
one or more SQL
statements and/or
PL/SQL blocks. Use
SQL Scripts to enter
and run multi-statement
scripts.
Copyright 2007, Oracle. All rights reserved.
20
Tell Me/Show Me
Using DBMS_OUTPUT.PUT_LINE
Look at this simple PL/SQL block and its output:
21
Tell Me/Show Me
Using DBMS_OUTPUT.PUT_LINE (continued)
Lets add a call to DBMS_OUTPUT.PUT_LINE:
22
Tell Me/Show Me
Using DBMS_OUTPUT.PUT_LINE (continued)
DBMS_OUTPUT.PUT_LINE allows us to display results so that we
can check that our block is working correctly. It allows us to
display one character string at a time, although this can be
concatenated. Here are two more examples:
DECLARE
v_emp_count
NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('PL/SQL is easy so far!');
SELECT COUNT(*) INTO v_emp_count FROM employees;
DBMS_OUTPUT.PUT_LINE(There are ||v_emp_count|| rows
in the employees table);
END;
23
Tell Me/Show Me
Terminology
Key terms used in this lesson include:
Anonymous PL/SQL block
Compiler
Subprograms
Procedures
Functions
24
Summary
In this lesson, you learned to:
Describe the structure of a PL/SQL
block
Identify the different types of PL/SQL
blocks
Identify PL/SQL programming
environments
Create and execute an anonymous
PL/SQL block
Output messages in PL/SQL
25
Try It/Solve It
The exercises in this lesson cover
the following topics:
Describing the structure of a
PL/SQL block
Identifying the block types of
PL/SQL
Identifying PL/SQL
programming environments
Creating and executing an
anonymous PL/SQL block
Outputting messages in PL/SQL
26