0% found this document useful (0 votes)
10 views46 pages

PL SQL Introduction

PL/SQL is a block-structured language that combines SQL with procedural programming, enhancing speed and reducing traffic by executing statements in blocks. It offers features like error handling, variable declaration, and the ability to create reusable database units, addressing SQL's limitations such as lack of condition checking and looping. The document also outlines the structure of PL/SQL blocks, variable declaration, initialization, and the use of constants and literals.

Uploaded by

swamiyougam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views46 pages

PL SQL Introduction

PL/SQL is a block-structured language that combines SQL with procedural programming, enhancing speed and reducing traffic by executing statements in blocks. It offers features like error handling, variable declaration, and the ability to create reusable database units, addressing SQL's limitations such as lack of condition checking and looping. The document also outlines the structure of PL/SQL blocks, variable declaration, initialization, and the use of constants and literals.

Uploaded by

swamiyougam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 46

PL/SQL Introduction

PL/SQL is a block structured language that enables developers to combine the


power of SQL with procedural statements.All the statements of a block are
passed to oracle engine all at once which increases processing speed and
decreases the traffic.

Disadvantages of SQL:

●​ SQL doesn’t provide the programmers with a technique of condition


checking, looping and branching.
●​ SQL statements are passed to Oracle engine one at a time which
increases traffic and decreases speed.
●​ SQL has no facility of error checking during manipulation of data.

Features of PL/SQL:

1.​ PL/SQL is basically a procedural language, which provides the


functionality of decision making, iteration and many more features of
procedural programming languages.
2.​ PL/SQL can execute a number of queries in one block using single
command.
3.​ One can create a PL/SQL unit such as procedures, functions,
packages, triggers, and types, which are stored in the database for
reuse by applications.
4.​ PL/SQL provides a feature to handle the exception which occurs in
PL/SQL block known as exception handling block.
5.​ Applications written in PL/SQL are portable to computer hardware or
operating system where Oracle is operational.
6.​ PL/SQL Offers extensive error checking.

Differences between SQL and PL/SQL:

SQL PL/SQL

PL/SQL is a block of codes that used


SQL is a single query that is used to
to write the entire program blocks/
perform DML and DDL operations.
procedure/ function, etc.

It is declarative, that defines what


PL/SQL is procedural that defines
needs to be done, rather than how
how the things needs to be done.
things need to be done.
Execute as a single statement. Execute as a whole block.

Mainly used to manipulate data. Mainly used to create an application.

It is an extension of SQL, so it can


Cannot contain PL/SQL code in it.
contain SQL inside it.

Structure of PL/SQL Block:

PL/SQL extends SQL by adding constructs found in procedural languages,


resulting in a structural language that is more powerful than SQL. The basic unit
in PL/SQL is a block. All PL/SQL programs are made up of blocks, which can be
nested within each other.
Typically, each block performs a logical action in the program. A block has the
following structure:

DECLARE
declaration statements;

BEGIN
executable statements

EXCEPTIONS
exception handling statements

END;

●​ Declare section starts with DECLARE keyword in which variables,


constants, records as cursors can be declared which stores data
temporarily. It basically consists definition of PL/SQL identifiers. This
part of the code is optional.
●​ Execution section starts with BEGIN and ends with END keyword.This
is a mandatory section and here the program logic is written to perform
any task like loops and conditional statements. It supports all DML
commands, DDL commands and SQL*PLUS built-in functions as well.
●​ Exception section starts with EXCEPTION keyword.This section is
optional which contains statements that are executed when a run-time
error occurs. Any exceptions can be handled in this section.

PL/SQL identifiers

There are several PL/SQL identifiers such as variables, constants, procedures,


cursors, triggers etc.

Variables:​
Like several other programming languages, variables in PL/SQL must be
declared prior to its use. They should have a valid name and data type as well.​
Syntax for declaration of variables:​
variable_name datatype [NOT NULL := value ];

1.​ ​
Example to show how to declare variables in PL/SQL :
SQL> SET SERVEROUTPUT
ON;

SQL> DECLARE
var1 INTEGER;
var2 REAL;
var3 varchar2(20)
;

BEGIN
null;
END;
/


Output:​


PL/SQL procedure successfully completed.

2.​ ​
Explanation:
○​ SET SERVEROUTPUT ON: It is used to display the buffer
used by the dbms_output.
○​ var1 INTEGER : It is the declaration of variable, named var1
which is of integer type. There are many other data types that
can be used like float, int, real, smallint, long etc. It also
supports variables used in SQL as well like NUMBER(prec,
scale), varchar, varchar2 etc.
○​ PL/SQL procedure successfully completed.: It is displayed
when the code is compiled and executed successfully.
○​ Slash (/) after END;: The slash (/) tells the SQL*Plus to
execute the block.
3.​ ​

1.1) INITIALISING VARIABLES:​
The variables can also be initialised just like in other programming
languages. Let us see an example for the same:

SQL> SET SERVEROUTPUT ON;


SQL> DECLARE
var1 INTEGER := 2 ;
var3 varchar2(20) := 'I Love
GeeksForGeeks' ;

BEGIN
null;

END;
/


Output:​
PL/SQL procedure successfully completed.

4.​ ​
Explanation:
○​ Assignment operator (:=) : It is used to assign a value to a
variable.
5.​ Displaying Output:​
The outputs are displayed by using DBMS_OUTPUT which is a built-in
package that enables the user to display output, debugging information,
and send messages from PL/SQL blocks, subprograms, packages, and
triggers.​
Let us see an example to see how to display a message using PL/SQL :

SQL> SET SERVEROUTPUT ON;


SQL> DECLARE
var varchar2(40) := 'I love
GeeksForGeeks' ;

BEGIN
dbms_output.put_line(var);

END;
/


Output:​
I love GeeksForGeeks

PL/SQL procedure successfully completed.

6.​ ​
Explanation:​

○​ dbms_output.put_line : This command is used to direct the


PL/SQL output to a screen.
7.​ Using Comments:​
Like in many other programming languages, in PL/SQL also, comments
can be put within the code which has no effect in the code. There are
two syntaxes to create comments in PL/SQL :
○​ Single Line Comment: To create a single line comment , the
symbol – – is used.
○​ Multi Line Comment: To create comments that span over
several lines, the symbol /* and */ is used.
8.​ Example to show how to create comments in PL/SQL :

SQL> SET SERVEROUTPUT ON;


SQL> DECLARE

-- I am a comment, so i will be
ignored.
var varchar2(40) := 'I love
GeeksForGeeks' ;

BEGIN
dbms_output.put_line(var);

END;
/


Output:​
I love GeeksForGeeks

PL/SQL procedure successfully completed.

9.​ ​

10.​ Taking input from user:​


Just like in other programming languages, in PL/SQL also, we can take
input from the user and store it in a variable. Let us see an example to
show how to take input from users in PL/SQL:
SQL> SET SERVEROUTPUT ON;

SQL> DECLARE

-- taking input for


variable a
a number := &a;

-- taking input for


variable b
b varchar2(30) := &b;

BEGIN
null;

END;
/


Output:​
Enter value for a: 24
old 2: a number := &a;
new 2: a number := 24;
Enter value for b: 'GeeksForGeeks'
old 3: b varchar2(30) := &b;
new 3: b varchar2(30) := 'GeeksForGeeks';

PL/SQL procedure successfully completed.

11.​​

12.​ (***) Let us see an example on PL/SQL to demonstrate all above


concepts in one single block of code.
--PL/SQL code to print sum of two numbers taken from
the user.
SQL> SET SERVEROUTPUT ON;

SQL> DECLARE

-- taking input for variable a


a integer := &a ;

-- taking input for variable b


b integer := &b ;
c integer ;

BEGIN
c := a + b ;
dbms_output.put_line('Sum of '||a||' and '||b||'
is = '||c);

END;
/


Enter value for a: 2
Enter value for b: 3

Sum of 2 and 3 is = 5

PL/SQL Variables
A variable is a meaningful name which facilitates a programmer to store data
temporarily during the execution of code. It helps you to manipulate data in PL/SQL
programs. It is nothing except a name given to a storage area. Each variable in the
PL/SQL has a specific data type which defines the size and layout of the variable's
memory.
A variable should not exceed 30 characters. Its letter optionally followed by more letters,
dollar signs, numerals, underscore etc.

1. It needs to declare the variable first in the declaration section of a PL/SQL block before
using it.

2. By default, variable names are not case sensitive. A reserved PL/SQL keyword cannot be
used as a variable name.

How to declare variable in PL/SQL


You must declare the PL/SQL variable in the declaration section or in a package as a
global variable. After the declaration, PL/SQL allocates memory for the variable's value
and the storage location is identified by the variable name.

Syntax for declaring variable:

Following is the syntax for declaring variable:

1.​ variable_name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT initial_value]

Here, variable_name is a valid identifier in PL/SQL and datatype must be valid PL/SQL
data type. A data type with size, scale or precision limit is called a constrained
declaration. The constrained declaration needs less memory than unconstrained
declaration.

HTML Tutorial

Naming rules for PL/SQL variables


The variable in PL/SQL must follow some naming rules like other programming
languages.

●​ The variable_name should not exceed 30 characters.

●​ The name of the variable must begin with ASCII letter. The PL/SQL is not case
sensitive so it could be either lowercase or uppercase. For example: v_data and
V_DATA refer to the same variables.

●​ You should make your variable easy to read and understand, after the first
character, it may be any number, underscore (_) or dollar sign ($).

●​ NOT NULL is an optional specification on the variable.

Initializing Variables in PL/SQL


Evertime you declare a variable, PL/SQL defines a default value NULL to it. If you want
to initialize a variable with other value than NULL value, you can do so during the
declaration, by using any one of the following methods.

●​ The DEFAULT keyword

●​ The assignment operator

1.​ counter binary_integer := 0;


2.​ greetings varchar2(20) DEFAULT 'Hello JavaTpoint';

You can also specify NOT NULL constraint to avoid NULL value. If you specify the NOT
NULL constraint, you must assign an initial value for that variable.

You must have a good programming skill to initialize variable properly otherwise,
sometimes program would produce unexpected result.

Example of initilizing variable


Let's take a simple example to explain it well:

1.​ DECLARE
2.​ a integer := 30;
3.​ b integer := 40;
4.​ c integer;
5.​ f real;
6.​ BEGIN
7.​ c := a + b;
8.​ dbms_output.put_line('Value of c: ' || c);
9.​ f := 100.0/3.0;
10.​ dbms_output.put_line('Value of f: ' || f);
11.​END;

After the execution, this will produce the following result:

1.​ Value of c: 70
2.​ Value of f: 33.333333333333333333
3.​
4.​ PL/SQL procedure successfully completed.

Variable Scope in PL/SQL:


PL/SQL allows nesting of blocks. A program block can contain another inner block. If
you declare a variable within an inner block, it is not accessible to an outer block. There
are two types of variable scope:

●​ Local Variable: Local variables are the inner block variables which are not
accessible to outer blocks.

●​ Global Variable: Global variables are declared in outermost block.


Example of Local and Global variables

Let's take an example to show the usage of Local and Global


variables in its simple form:

1.​ DECLARE
2.​ -- Global variables
3.​ num1 number := 95;
4.​ num2 number := 85;
5.​ BEGIN
6.​ dbms_output.put_line('Outer Variable num1: ' || num1);
7.​ dbms_output.put_line('Outer Variable num2: ' || num2);
8.​ DECLARE
9.​ -- Local variables
10.​ num1 number := 195;
11.​ num2 number := 185;
12.​ BEGIN
13.​ dbms_output.put_line('Inner Variable num1: ' || num1);
14.​ dbms_output.put_line('Inner Variable num2: ' || num2);
15.​ END;
16.​END;
17.​/

After the execution, this will produce the following result:

1.​ Outer Variable num1: 95


2.​ Outer Variable num2: 85
3.​ Inner Variable num1: 195
4.​ Inner Variable num2: 185

5.​ PL/SQL procedure successfully completed.

PL/SQL Constants
A constant is a value used in a PL/SQL block that remains unchanged throughout the
program. It is a user-defined literal value. It can be declared and used instead of actual
values.

Let's take an example to explain it well:

Suppose, you have to write a program which will increase the salary of the employees
upto 30%, you can declare a constant and use it throughout the program. Next time if
you want to increase the salary again you can change the value of constant than the
actual value throughout the program.

Syntax to declare a constant:

1.​ constant_name CONSTANT datatype := VALUE;

●​ Constant_name:it is the name of constant just like variable name. The constant
word is a reserved word and its value does not change.

●​ VALUE: it is a value which is assigned to a constant when it is declared. It can not


be assigned later.

Example of PL/SQL constant


Let's take an example to explain it well:

1.​ DECLARE
2.​ -- constant declaration
3.​ pi constant number := 3.141592654;
4.​ -- other declarations
5.​ radius number(5,2);
6.​ dia number(5,2);
7.​ circumference number(7, 2);
8.​ area number (10, 2);
9.​ BEGIN
10.​ -- processing
11.​ radius := 9.5;
12.​ dia := radius * 2;
13.​ circumference := 2.0 * pi * radius;
14.​ area := pi * radius * radius;
15.​ -- output
16.​ dbms_output.put_line('Radius: ' || radius);
17.​ dbms_output.put_line('Diameter: ' || dia);
18.​ dbms_output.put_line('Circumference: ' || circumference);
19.​ dbms_output.put_line('Area: ' || area);
20.​END;
21.​/

After the execution of the above code at SQL prompt, it will produce the following
result:.

1.​ Radius: 9.5


2.​ Diameter: 19
3.​ Circumference: 59.69
4.​ Area: 283.53
5.​
6.​ Pl/SQL procedure successfully completed.
PL/SQL Literals
Literals are the explicit numeric, character, string or boolean values which are not
represented by an identifier. For example: TRUE, NULL, etc. are all literals of type
boolean. PL/SQL literals are case-sensitive. There are following kinds of literals in
PL/SQL:

●​ Numeric Literals

●​ Character Literals

●​ String Literals

●​ BOOLEAN Literals

●​ Date and Time Literals

Example of these different types of Literals:

Literals Examples

Numeric 75125, 3568, 33.3333333 etc.

Character 'A' '%' '9' ' ' 'z' '('


String Hello JavaTpoint!

Boolean TRUE, FALSE, NULL etc.

Date and Time '26-11-2002' , '2012-10-29 12:01:01'

PL/SQL Constants
A constant is a value used in a PL/SQL block that remains unchanged throughout the
program. It is a user-defined literal value. It can be declared and used instead of actual
values.

Let's take an example to explain it well:

Suppose, you have to write a program which will increase the salary of the employees
upto 30%, you can declare a constant and use it throughout the program. Next time if
you want to increase the salary again you can change the value of constant than the
actual value throughout the program.

Syntax to declare a constant:

1.​ constant_name CONSTANT datatype := VALUE;


●​ Constant_name:it is the name of constant just like variable name. The constant
word is a reserved word and its value does not change.

●​ VALUE: it is a value which is assigned to a constant when it is declared. It can not


be assigned later.

Example of PL/SQL constant


Let's take an example to explain it well:

1.​ DECLARE
2.​ -- constant declaration
3.​ pi constant number := 3.141592654;
4.​ -- other declarations
5.​ radius number(5,2);
6.​ dia number(5,2);
7.​ circumference number(7, 2);
8.​ area number (10, 2);
9.​ BEGIN
10.​ -- processing
11.​ radius := 9.5;
12.​ dia := radius * 2;
13.​ circumference := 2.0 * pi * radius;
14.​ area := pi * radius * radius;
15.​ -- output
16.​ dbms_output.put_line('Radius: ' || radius);
17.​ dbms_output.put_line('Diameter: ' || dia);
18.​ dbms_output.put_line('Circumference: ' || circumference);
19.​ dbms_output.put_line('Area: ' || area);
20.​END;
21.​/

After the execution of the above code at SQL prompt, it will produce the following
result:.

1.​ Radius: 9.5


2.​ Diameter: 19
3.​ Circumference: 59.69
4.​ Area: 283.53
5.​
6.​ Pl/SQL procedure successfully completed.

PL/SQL Literals
Literals are the explicit numeric, character, string or boolean values which are not
represented by an identifier. For example: TRUE, NULL, etc. are all literals of type
boolean. PL/SQL literals are case-sensitive. There are following kinds of literals in
PL/SQL:

●​ Numeric Literals

●​ Character Literals

●​ String Literals

●​ BOOLEAN Literals

●​ Date and Time Literals

Example of these different types of Literals:


Literals Examples

Numeric 75125, 3568, 33.3333333 etc.

Character 'A' '%' '9' ' ' 'z' '('

String Hello JavaTpoint!

Boolean TRUE, FALSE, NULL etc.

Date and Time '26-11-2002' , '2012-10-29 12:01:01'


PL/SQL If
PL/SQL supports the programming language features like conditional statements and
iterative statements. Its programming constructs are similar to how you use in
programming languages like Java and C++.

Syntax for IF Statement:

There are different syntaxes for the IF-THEN-ELSE statement.

Syntax: (IF-THEN statement):

1.​ IF condition
2.​ THEN
3.​ Statement: {It is executed when condition is true}
4.​ END IF;

This syntax is used when you want to execute statements only when condition is TRUE.

Syntax: (IF-THEN-ELSE statement):

1.​ IF condition
2.​ THEN
3.​ {...statements to execute when condition is TRUE...}
4.​ ELSE
5.​ {...statements to execute when condition is FALSE...}
6.​ END IF;

This syntax is used when you want to execute one set of statements when condition is
TRUE or a different set of statements when condition is FALSE.

Syntax: (IF-THEN-ELSIF statement):


1.​ IF condition1
2.​ THEN
3.​ {...statements to execute when condition1 is TRUE...}
4.​ ELSIF condition2
5.​ THEN
6.​ {...statements to execute when condition2 is TRUE...}
7.​ END IF;

This syntax is used when you want to execute one set of statements when condition1 is
TRUE or a different set of statements when condition2 is TRUE.

Syntax: (IF-THEN-ELSIF-ELSE statement):

1.​ IF condition1
2.​ THEN
3.​ {...statements to execute when condition1 is TRUE...}
4.​ ELSIF condition2
5.​ THEN
6.​ {...statements to execute when condition2 is TRUE...}
7.​ ELSE
8.​ {...statements to execute when both condition1 and condition2 are FALSE...}
9.​ END IF;

It is the most advance syntax and used if you want to execute one set of
statements when condition1 is TRUE, a different set of statement when
condition2 is TRUE or a different set of statements when both the condition1 and
condition2 are FALSE.
When a condition is found to be TRUE, the IF-THEN-ELSE statement will execute the
corresponding code and not check the conditions any further.

If there no condition is met, the ELSE portion of the IF-THEN-ELSE statement will be
executed.

ELSIF and ELSE portions are optional.

Example of PL/SQL If Statement


Let's take an example to see the whole concept:

1.​ DECLARE
2.​ a number(3) := 500;
3.​ BEGIN
4.​ -- check the boolean condition using if statement
5.​ IF( a < 20 ) THEN
6.​ -- if condition is true then print the following
7.​ dbms_output.put_line('a is less than 20 ' );
8.​ ELSE
9.​ dbms_output.put_line('a is not less than 20 ' );
10.​ END IF;
11.​ dbms_output.put_line('value of a is : ' || a);
12.​END;

After the execution of the above code in SQL prompt, you will get the following result:

a is not less than 20


value of a is : 500

PL/SQL procedure successfully completed.

PL/SQL Case Statement


The PL/SQL CASE statement facilitates you to execute a sequence of satatements
based on a selector. A selector can be anything such as variable, function or an
expression that the CASE statement checks to a boolean value.

The CASE statement works like the IF statement, only using the keyword WHEN. A CASE
statement is evaluated from top to bottom. If it get the condition TRUE, then the
corresponding THEN calause is executed and the execution goes to the END CASE
clause.

Syntax for the CASE Statement:

1.​ CASE [ expression ]


2.​ WHEN condition_1 THEN result_1
3.​ WHEN condition_2 THEN result_2
4.​ ...
5.​ WHEN condition_n THEN result_n
6.​ ELSE result
7.​ END

Example of PL/SQL case statement


Let's take an example to make it clear:

1.​ DECLARE
2.​ grade char(1) := 'A';
3.​ BEGIN
4.​ CASE grade
5.​ when 'A' then dbms_output.put_line('Excellent');
6.​ when 'B' then dbms_output.put_line('Very good');
7.​ when 'C' then dbms_output.put_line('Good');
8.​ when 'D' then dbms_output.put_line('Average');
9.​ when 'F' then dbms_output.put_line('Passed with Grace');
10.​ else dbms_output.put_line('Failed');
11.​ END CASE;
12.​END;

After the execution of above code, you will get the following result:

Excellent

PL/SQL procedure successfully completed.

PL/SQL Loop
The PL/SQL loops are used to repeat the execution of one or more statements for
specified number of times. These are also known as iterative control statements.

Syntax for a basic loop:

1.​ LOOP
2.​ Sequence of statements;
3.​ END LOOP;

Types of PL/SQL Loops


There are 4 types of PL/SQL Loops.
1.​ Basic Loop / Exit Loop

2.​ While Loop

3.​ For Loop

4.​ Cursor For Loop

PL/SQL Exit Loop (Basic Loop)


PL/SQL exit loop is used when a set of statements is to be
executed at least once before the termination of the loop. There
must be an EXIT condition specified in the loop, otherwise the
loop will get into an infinite number of iterations. After the
occurrence of EXIT condition, the process exits the loop.

Syntax of basic loop:

1.​LOOP
2.​ Sequence of statements;
3.​END LOOP;

Syntax of exit loop:

1.​LOOP
2.​ statements;
3.​ EXIT;
4.​ {or EXIT WHEN condition;}
5.​END LOOP;

Example of PL/SQL EXIT Loop


Let's take a simple example to explain it well:

1.​DECLARE
2.​i NUMBER := 1;
3.​BEGIN
4.​LOOP
5.​EXIT WHEN i>10;
6.​DBMS_OUTPUT.PUT_LINE(i);
7.​i := i+1;
8.​END LOOP;
9.​END;

After the execution of the above code, you will get the
following result:

7
8

10

Note: You must follow these steps while using PL/SQL Exit Loop.

●​ Initialize a variable before the loop body

●​ Increment the variable in the loop.

●​ You should use EXIT WHEN statement to exit from the Loop. Otherwise the EXIT
statement without WHEN condition, the statements in the Loop is executed only
once.

PL/SQL EXIT Loop Example 2


1.​ DECLARE
2.​ VAR1 NUMBER;
3.​ VAR2 NUMBER;
4.​ BEGIN
5.​ VAR1:=100;
6.​ VAR2:=1;
7.​ LOOP
8.​ DBMS_OUTPUT.PUT_LINE (VAR1*VAR2);
9.​ IF (VAR2=10) THEN
10.​EXIT;
11.​END IF;
12.​VAR2:=VAR2+1;
13.​END LOOP;
14.​END;

Output:

100

200

300

400

500

600

700

800

900
1000

PL/SQL While Loop


PL/SQL while loop is used when a set of statements has to be executed as long as a
condition is true, the While loop is used. The condition is decided at the beginning of
each iteration and continues until the condition becomes false.

Syntax of while loop:

1.​ WHILE <condition>


2.​ LOOP statements;
3.​ END LOOP;

Example of PL/SQL While Loop


Let's see a simple example of PL/SQL WHILE loop.

1.​ DECLARE
2.​ i INTEGER := 1;
3.​ BEGIN
4.​ WHILE i <= 10 LOOP
5.​ DBMS_OUTPUT.PUT_LINE(i);
6.​ i := i+1;
7.​ END LOOP;
8.​ END;

After the execution of the above code, you will get the following result:

1
2

10

Note: You must follow these steps while using PL/SQL WHILE Loop.

●​ Initialize a variable before the loop body.

●​ Increment the variable in the loop.


●​ You can use EXIT WHEN statements and EXIT statements in While loop but it is
not done often.

PL/SQL WHILE Loop Example 2


1.​ DECLARE
2.​ VAR1 NUMBER;
3.​ VAR2 NUMBER;
4.​ BEGIN
5.​ VAR1:=200;
6.​ VAR2:=1;
7.​ WHILE (VAR2<=10)
8.​ LOOP
9.​ DBMS_OUTPUT.PUT_LINE (VAR1*VAR2);
10.​VAR2:=VAR2+1;
11.​END LOOP;
12.​END;

Output:

200

400

600

800
1000

1200

1400

1600

1800

2000

PL/SQL FOR Loop


PL/SQL for loop is used when when you want to execute a set of statements for a
predetermined number of times. The loop is iterated between the start and end integer
values. The counter is always incremented by 1 and once the counter reaches the value
of end integer, the loop ends.

Syntax of for loop:

1.​ FOR counter IN initial_value .. final_value LOOP


2.​ LOOP statements;
3.​ END LOOP;

●​ initial_value : Start integer value

●​ final_value : End integer value


PL/SQL For Loop Example 1
Let's see a simple example of PL/SQL FOR loop.

1.​ BEGIN
2.​ FOR k IN 1..10 LOOP
3.​ -- note that k was not declared
4.​ DBMS_OUTPUT.PUT_LINE(k);
5.​ END LOOP;
6.​ END;

After the execution of the above code, you will get the following result:

7
8

10

Note: You must follow these steps while using PL/SQL WHILE Loop.

●​ You don't need to declare the counter variable explicitly because it is declared
implicitly in the declaration section.

●​ The counter variable is incremented by 1 and does not need to be incremented


explicitly.

●​ You can use EXIT WHEN statements and EXIT statements in FOR Loops but it is
not done often.

PL/SQL For Loop Example 2


1.​ DECLARE
2.​ VAR1 NUMBER;
3.​ BEGIN
4.​ VAR1:=10;
5.​ FOR VAR2 IN 1..10
6.​ LOOP
7.​ DBMS_OUTPUT.PUT_LINE (VAR1*VAR2);
8.​ END LOOP;
9.​ END;
Output:

10

20

30

40

50

60

70

80

90

100
PL/SQL For Loop REVERSE Example 3
Let's see an example of PL/SQL for loop where we are using REVERSE keyword.

1.​ DECLARE
2.​ VAR1 NUMBER;
3.​ BEGIN
4.​ VAR1:=10;
5.​ FOR VAR2 IN REVERSE 1..10
6.​ LOOP
7.​ DBMS_OUTPUT.PUT_LINE (VAR1*VAR2);
8.​ END LOOP;
9.​ END;

Output:

100

90

80

70

60

50
40

30

20

10

PL/SQL Continue Statement


The continue statement is used to exit the loop from the reminder if its body either
conditionally or unconditionally and forces the next iteration of the loop to take place,
skipping any codes in between.

The continue statement is not a keyword in Oracle 10g. It is a new feature encorporated
in oracle 11g.

For example: If a continue statement exits a cursor FOR LOOP prematurely then it exits
an inner loop and transfer control to the next iteration of an outer loop, the cursor closes
(in this context, CONTINUE works like GOTO).

Syntax:

1.​ continue;

Example of PL/SQL continue statement


Let's take an example of PL/SQL continue statement.

1.​ DECLARE
2.​ x NUMBER := 0;
3.​ BEGIN
4.​ LOOP -- After CONTINUE statement, control resumes here
5.​ DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x));
6.​ x := x + 1;
7.​ IF x < 3 THEN
8.​ CONTINUE;
9.​ END IF;
10.​ DBMS_OUTPUT.PUT_LINE
11.​ ('Inside loop, after CONTINUE: x = ' || TO_CHAR(x));
12.​ EXIT WHEN x = 5;
13.​ END LOOP;
14.​
15.​ DBMS_OUTPUT.PUT_LINE (' After loop: x = ' || TO_CHAR(x));
16.​END;
17.​/

After the execution of above code, you will get the following result:

Inside loop: x = 0

Inside loop: x = 1

Inside loop: x = 2

Inside loop, after CONTINUE: x = 3

Inside loop: x = 3
Inside loop, after CONTINUE: x = 4

Inside loop: x = 4

Inside loop, after CONTINUE: x = 5

After loop: x = 5

PL/SQL GOTO Statement


In PL/SQL, GOTO statement makes you able to get an unconditional jump from the
GOTO to a specific executable statement label in the same subprogram of the PL/SQL
block.

Here the label declaration which contains the label_name encapsulated within the << >>
symbol and must be followed by at least one statement to execute.

Syntax:

1.​ GOTO label_name;

Here the label declaration which contains the label_name encapsulated within the << >>
symbol and must be followed by at least one statement to execute.

1.​ GOTO label_name;


2.​ ..
3.​ ..
4.​ <<label_name>>
5.​ Statement;
Example of PL/SQL GOTO statement
Let's take an example of PL/SQL GOTO statement.

1.​ DECLARE
2.​ a number(2) := 30;
3.​ BEGIN
4.​ <<loopstart>>
5.​ -- while loop execution
6.​ WHILE a < 50 LOOP
7.​ dbms_output.put_line ('value of a: ' || a);
8.​ a := a + 1;
9.​ IF a = 35 THEN
10.​ a := a + 1;
11.​ GOTO loopstart;
12.​ END IF;
13.​ END LOOP;
14.​END;
15.​/

After the execution of above code, you will get the following result:

value of a: 30

value of a: 31

value of a: 32
value of a: 33

value of a: 34

value of a: 36

value of a: 37

value of a: 38

value of a: 39

value of a: 40

value of a: 41

value of a: 42

value of a: 43

value of a: 44

value of a: 45
value of a: 46

value of a: 47

value of a: 48

value of a: 49

Statement processed.

Restriction on GOTO statement


Following is a list of some restrictions imposed on GOTO statement.

●​ Cannot transfer control into an IF statement, CASE statement, LOOP statement or


sub-block.

●​ Cannot transfer control from one IF statement clause to another or from one
CASE statement WHEN clause to another.

●​ Cannot transfer control from an outer block into a sub-block.

●​ Cannot transfer control out of a subprogram.

●​ Cannot transfer control into an exception handler.

You might also like