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):
- IFÂ condition
- THEN
- Statement: {It is executed when condition is true}
- ENDÂ IF;
This syntax is used when you want to execute statements only when condition is TRUE.
Syntax: (IF-THEN-ELSE statement):
- IFÂ condition
- THEN
-    {...statements to execute when condition is TRUE...}
- ELSE
-    {...statements to execute when condition is FALSE...}
- 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):
- IFÂ condition1
- THEN
-    {...statements to execute when condition1 is TRUE...}
- ELSIFÂ condition2
- THEN
-    {...statements to execute when condition2 is TRUE...}
- 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):
- IFÂ condition1
- THEN
-    {...statements to execute when condition1 is TRUE...}
- ELSIFÂ condition2
- THEN
-    {...statements to execute when condition2 is TRUE...}
- ELSE
-    {...statements to execute when both condition1 and condition2 are FALSE...}
- 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:
- DECLARE
-    a number(3) := 500;
- BEGIN
-    -- check the boolean condition using if statementÂ
-    IF( a < 20 ) THEN
-       -- if condition is true then print the following Â
-       dbms_output.put_line('a is less than 20 ' );
- Â Â Â ELSE
-       dbms_output.put_line('a is not less than 20 ' );
- Â Â Â ENDÂ IF;
-    dbms_output.put_line('value of a is : ' || a);
- 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:
- CASE [ expression ]
- WHENÂ condition_1Â THENÂ result_1
- Â Â Â WHENÂ condition_2Â THENÂ result_2
- Â Â Â ...
-    WHEN condition_n THEN result_n
- Â ELSEÂ result
- END
Example of PL/SQL case statement
Let's take an example to make it clear:
- DECLARE
-    grade char(1) := 'A';
- BEGIN
- Â Â Â CASEÂ grade
-       when 'A' then dbms_output.put_line('Excellent');
-       when 'B' then dbms_output.put_line('Very good');
-       when 'C' then dbms_output.put_line('Good');
-       when 'D' then dbms_output.put_line('Average');
-       when 'F' then dbms_output.put_line('Passed with Grace');
-       else dbms_output.put_line('Failed');
- Â Â Â ENDÂ CASE;
- 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:
- LOOP
-   Sequence of statements;
- ENDÂ LOOP;
Types of PL/SQL Loops
There are 4 types of PL/SQL Loops.
- Basic Loop / Exit Loop
- While Loop
- For Loop
- 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:
- LOOP
-   Sequence of statements;
- ENDÂ LOOP;
Syntax of exit loop:
- LOOP
- Â Â Â statements;
- Â Â Â EXIT;
-    {or EXIT WHEN condition;}
- ENDÂ LOOP;
Example of PL/SQL EXIT Loop
Let's take a simple example to explain it well:
- DECLARE
- i NUMBER := 1;
- BEGIN
- LOOP
- EXITÂ WHENÂ i>10;
- DBMS_OUTPUT.PUT_LINE(i);
- i := i+1;
- ENDÂ LOOP;
- END;
After the execution of the above code, you will get the following result:
1 2 3 4 5 6 7 8 9 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
- DECLARE
- VAR1Â NUMBER;
- VAR2Â NUMBER;
- BEGIN
- VAR1:=100;
- VAR2:=1;
- LOOP
- DBMS_OUTPUT.PUT_LINEÂ (VAR1*VAR2);
- IFÂ (VAR2=10)Â THEN
- EXIT;
- ENDÂ IF;
- VAR2:=VAR2+1;
- ENDÂ LOOP;
- 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:
- WHILEÂ <condition>
- Â LOOPÂ statements;
- ENDÂ LOOP;
Example of PL/SQL While Loop
Let's see a simple example of PL/SQL WHILE loop.
- DECLARE
- i INTEGER := 1;
- BEGIN
- WHILE i <= 10 LOOP
- DBMS_OUTPUT.PUT_LINE(i);
- i := i+1;
- ENDÂ LOOP;
- END;
After the execution of the above code, you will get the following result:
1 2 3 4 5 6 7 8 9 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
- DECLARE
- VAR1Â NUMBER;
- VAR2Â NUMBER;
- BEGIN
- VAR1:=200;
- VAR2:=1;
- WHILEÂ (VAR2<=10)
- LOOP
- DBMS_OUTPUT.PUT_LINEÂ (VAR1*VAR2);
- VAR2:=VAR2+1;
- ENDÂ LOOP;
- 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:
- FOR counter IN initial_value .. final_value LOOP
- Â Â LOOPÂ statements;
- 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.
- BEGIN
- FOR k IN 1..10 LOOP
- -- note that k was not declared
- DBMS_OUTPUT.PUT_LINE(k);
- ENDÂ LOOP;
- END;
After the execution of the above code, you will get the following result:
1 2 3 4 5 6 7 8 9 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
- DECLARE
- VAR1Â NUMBER;
- BEGIN
- VAR1:=10;
- FORÂ VAR2Â INÂ 1..10
- LOOP
- DBMS_OUTPUT.PUT_LINEÂ (VAR1*VAR2);
- ENDÂ LOOP;
- 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.
- DECLARE
- VAR1Â NUMBER;
- BEGIN
- VAR1:=10;
- FORÂ VAR2Â INÂ REVERSEÂ 1..10
- LOOP
- DBMS_OUTPUT.PUT_LINEÂ (VAR1*VAR2);
- ENDÂ LOOP;
- 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:
- continue;
Example of PL/SQL continue statement
Let's take an example of PL/SQL continue statement.
- DECLARE
-   x NUMBER := 0;
- BEGIN
-   LOOP -- After CONTINUE statement, control resumes here
-     DBMS_OUTPUT.PUT_LINE ('Inside loop:  x = ' || TO_CHAR(x));
-     x := x + 1;
-     IF x < 3 THEN
- Â Â Â Â Â Â CONTINUE;
- Â Â Â Â ENDÂ IF;
- Â Â Â Â DBMS_OUTPUT.PUT_LINE
-       ('Inside loop, after CONTINUE:  x = ' || TO_CHAR(x));
-     EXIT WHEN x = 5;
- Â Â ENDÂ LOOP;
-   DBMS_OUTPUT.PUT_LINE (' After loop:  x = ' || TO_CHAR(x));
- END;
- /
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