0% found this document useful (0 votes)
18 views13 pages

Notes Chapter 3.1 Lecture 1.1 (Procedures)

The document provides an overview of PL/SQL subprograms, specifically focusing on procedures and functions, including their definitions, characteristics, and syntax. It explains the different types of parameters (IN, OUT, IN OUT) used in these subprograms and how they facilitate data exchange. Additionally, it includes examples of creating and executing procedures and functions, along with methods for passing parameters.

Uploaded by

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

Notes Chapter 3.1 Lecture 1.1 (Procedures)

The document provides an overview of PL/SQL subprograms, specifically focusing on procedures and functions, including their definitions, characteristics, and syntax. It explains the different types of parameters (IN, OUT, IN OUT) used in these subprograms and how they facilitate data exchange. Additionally, it includes examples of creating and executing procedures and functions, along with methods for passing parameters.

Uploaded by

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

CO2: To enhance the Employability skills to make student well versed with

core subjects of his domain.

UNIT-3

CHAPTER – 3.1
Procedures and Functions are the subprograms which can be created and saved in the
database as database objects. They can be called or referred inside the other blocks also.

Terminologies in PL/SQL Subprograms

Before we learn about PL/SQL subprograms, we will discuss the various terminologies that
are the part of these subprograms. Below are the terminologies that we are going to discuss.

Parameter:

The parameter is variable or placeholder of any valid PL/SQL datatype through which the
PL/SQL subprogram exchange the values with the main code. This parameter allows to give
input to the subprograms and to extract from these subprograms.

● These parameters should be defined along with the subprograms at the time of
creation.

● These parameters are included n the calling statement of these subprograms to interact
the values with the subprograms.

● The datatype of the parameter in the subprogram and the calling statement should be
same.

● The size of the datatype should not mention at the time of parameter declaration, as
the size is dynamic for this type.

Based on their purpose parameters are classified as

1. IN Parameter

2. OUT Parameter

3. IN OUT Parameter

IN Parameter:

● This parameter is used for giving input to the subprograms.


● It is a read-only variable inside the subprograms. Their values cannot be changed
inside the subprogram.

● In the calling statement, these parameters can be a variable or a literal value or an


expression, for example, it could be the arithmetic expression like '5*8' or 'a/b' where
'a' and 'b' are variables.

● By default, the parameters are of IN type.

OUT Parameter:

● This parameter is used for getting output from the subprograms.

● It is a read-write variable inside the subprograms. Their values can be changed inside
the subprograms.

● In the calling statement, these parameters should always be a variable to hold the
value from the current subprograms.

IN OUT Parameter:

● This parameter is used for both giving input and for getting output from the
subprograms.

● It is a read-write variable inside the subprograms. Their values can be changed inside
the subprograms.

● In the calling statement, these parameters should always be a variable to hold the
value from the subprograms.

These parameter type should be mentioned at the time of creating the subprograms.

RETURN

RETURN is the keyword that instructs the compiler to switch the control from the
subprogram to the calling statement. In subprogram RETURN simply means that the control
needs to exit from the subprogram. Once the controller finds RETURN keyword in the
subprogram, the code after this will be skipped.

Normally, parent or main block will call the subprograms, and then the control will shift from
those parent block to the called subprograms. RETURN in the subprogram will return the
control back to their parent block. In the case of functions RETURN statement also returns
the value. The datatype of this value is always mentioned at the time of function declaration.
The datatype can be of any valid PL/SQL data type.

What is Procedure in PL/SQL?

A Procedure in PL/SQL is a subprogram unit that consists of a group of PL/SQL statements


that can be called by name. Each procedure in PL/SQL has its own unique name by which it
can be referred to and called. This subprogram unit in the Oracle database is stored as a
database object.

Note: Subprogram is nothing but a procedure, and it needs to be created manually as per the
requirement. Once created they will be stored as database objects.

Below are the characteristics of Procedure subprogram unit in PL/SQL:

● Procedures are standalone blocks of a program that can be stored in the database.

● Call to these PLSQL procedures can be made by referring to their name, to execute
the PL/SQL statements.

● It is mainly used to execute a process in PL/SQL.

● It can have nested blocks, or it can be defined and nested inside the other blocks or
packages.

● It contains declaration part (optional), execution part, exception handling part


(optional).

● The values can be passed into Oracle procedure or fetched from the procedure
through parameters.

● These parameters should be included in the calling statement.

● A Procedure in SQL can have a RETURN statement to return the control to the
calling block, but it cannot return any values through the RETURN statement.

● Procedures cannot be called directly from SELECT statements. They can be called
from another block or through EXEC keyword.

Syntax:

CREATE OR REPLACE PROCEDURE

<procedure_name>
(

<parameterl IN/OUT <datatype>

..

[ IS | AS ]

<declaration_part>

BEGIN

<execution part>

EXCEPTION

<exception handling part>

END;

● CREATE PROCEDURE instructs the compiler to create new procedure in Oracle.


Keyword 'OR REPLACE' instructs the compile to replace the existing procedure (if
any) with the current one.

● Procedure name should be unique.

● Keyword 'IS' will be used, when the stored procedure in Oracle is nested into some
other blocks. If the procedure is standalone then 'AS' will be used. Other than this
coding standard, both have the same meaning.

Example1: Creating Procedure and calling it using EXEC

In this example, we are going to create an Oracle procedure that takes the name as input and
prints the welcome message as output. We are going to use EXEC command to call
procedure.

CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)

IS

BEGIN

dbms_output.put_line (‘Welcome '|| p_name);


END;

EXEC welcome_msg (‘Guru99’);

Code Explanation:

● Code line 1: Creating the procedure with name 'welcome_msg' and with one
parameter 'p_name' of 'IN' type.

● Code line 4: Printing the welcome message by concatenating the input name.

● Procedure is compiled successfully.

● Code line 7: Calling the procedure using EXEC command with the parameter
'Guru99'. Procedure is executed, and the message is printed out as "Welcome
Guru99".

What is Function?

Functions is a standalone PL/SQL subprogram. Like PL/SQL procedure, functions have a


unique name by which it can be referred. These are stored as PL/SQL database objects.
Below are some of the characteristics of functions.

● Functions are a standalone block that is mainly used for calculation purpose.

● Function use RETURN keyword to return the value, and the datatype of this is
defined at the time of creation.

● A Function should either return a value or raise the exception, i.e. return is mandatory
in functions.

● Function with no DML statements can be directly called in SELECT query whereas
the function with DML operation can only be called from other PL/SQL blocks.

● It can have nested blocks, or it can be defined and nested inside the other blocks or
packages.

● It contains declaration part (optional), execution part, exception handling part


(optional).

● The values can be passed into the function or fetched from the procedure through the
parameters.
● These parameters should be included in the calling statement.

● A PLSQL function can also return the value through OUT parameters other than
using RETURN.

● Since it will always return the value, in calling statement it always accompanies with
assignment operator to populate the variables.

Syntax

CREATE OR REPLACE FUNCTION

<procedure_name>

<parameterl IN/OUT <datatype>

RETURN <datatype>

[ IS | AS ]

<declaration_part>

BEGIN

<execution part>

EXCEPTION

<exception handling part>

END;

● 3CREATE FUNCTION instructs the compiler to create a new function. Keyword 'OR
REPLACE' instructs the compiler to replace the existing function (if any) with the
current one.

● The Function name should be unique.

● RETURN datatype should be mentioned.

● Keyword 'IS' will be used, when the procedure is nested into some other blocks. If the
procedure is standalone then 'AS' will be used. Other than this coding standard, both
have the same meaning.
Example1: Creating Function and calling it using Anonymous Block

In this program, we are going to create a function that takes the name as input and returns the
welcome message as output. We are going to use anonymous block and select statement to
call the function.

CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2)


RETURN VAR.CHAR2

IS

BEGIN

RETURN (‘Welcome ‘|| p_name);

END;

DECLARE

lv_msg VARCHAR2(250);

BEGIN

lv_msg := welcome_msg_func (‘Guru99’);

dbms_output.put_line(lv_msg);

END;

SELECT welcome_msg_func(‘Guru99:) FROM DUAL;

Code Explanation:

● Code line 1: Creating the Oracle function with name 'welcome_msg_func' and with
one parameter 'p_name' of 'IN' type.

● Code line 2: declaring the return type as VARCHAR2

● Code line 5: Returning the concatenated value 'Welcome' and the parameter value.

● Code line 8: Anonymous block to call the above function.

● Code line 9: Declaring the variable with datatype same as the return datatype of the
function.
● Code line 11: Calling the function and populating the return value to the variable
'lv_msg'.

● Code line 12: Printing the variable value. The output you will get here is "Welcome
Guru99"

● Code line 14: Calling the same function through SELECT statement. The return value
is directed to the standard output directly.

Similarities between Procedure and Function

● Both can be called from other PL/SQL blocks.

● If the exception raised in the subprogram is not handled in the subprogram exception
handling section, then it will propagate to the calling block.

● Both can have as many parameters as required.

● Both are treated as database objects in PL/SQL.

Creating a Procedure

A procedure is created with the CREATE OR REPLACE PROCEDURE statement. The


simplified syntax for the CREATE OR REPLACE PROCEDURE statement is as follows −

CREATE [OR REPLACE] PROCEDURE procedure_name

[(parameter_name [IN | OUT | IN OUT] type [, ...])]

{IS | AS}

BEGIN

< procedure_body >

END procedure_name;

Where,

● procedure-name specifies the name of the procedure.

● [OR REPLACE] option allows the modification of an existing procedure.

● The optional parameter list contains name, mode and types of the
parameters. IN represents the value that will be passed from outside and OUT
represents the parameter that will be used to return a value outside of the procedure.

● procedure-body contains the executable part.


● The AS keyword is used instead of the IS keyword for creating a standalone
procedure.

9*Example

The following example creates a simple procedure that displays the string 'Hello World!' on
the screen when executed.

CREATE OR REPLACE PROCEDURE greetings

AS

BEGIN

dbms_output.put_line('Hello World!');

END;

When the above code is executed using the SQL prompt, it will produce the following result

Procedure created.

Executing a Standalone Procedure

A standalone procedure can be called in two ways −

● Using the EXECUTE keyword

● Calling the name of the procedure from a PL/SQL block

The above procedure named 'greetings' can be called with the EXECUTE keyword as −

EXECUTE greetings;

The above call will display −

Hello World

PL/SQL procedure successfully completed.

The procedure can also be called from another PL/SQL block −

BEGIN

greetings;

END;
/

The above call will display −

Hello World

PL/SQL procedure successfully completed.

Deleting a Standalone Procedure

A standalone procedure is deleted with the DROP PROCEDURE statement. Syntax for
deleting a procedure is −

DROP PROCEDURE procedure-name;

You can drop the greetings procedure by using the following statement −

DROP PROCEDURE greetings;

Parameter Modes in PL/SQL Subprograms

The following table lists out the parameter modes in PL/SQL subprograms −

1 IN

An IN parameter lets you pass a value to the subprogram. It is a read-only parameter. Inside
the subprogram, an IN parameter acts like a constant. It cannot be assigned a value. You can
pass a constant, literal, initialized variable, or expression as an IN parameter. You can also
initialize it to a default value; however, in that case, it is omitted from the subprogram call. It
is the default mode of parameter passing. Parameters are passed by reference.

2 OUT

An OUT parameter returns a value to the calling program. Inside the subprogram, an OUT
parameter acts like a variable. You can change its value and reference the value after
assigning it. The actual parameter must be variable and it is passed by value.

3 IN OUT

An IN OUT parameter passes an initial value to a subprogram and returns an updated value to
the caller. It can be assigned a value and the value can be read. The actual parameter
corresponding to an IN OUT formal parameter must be a variable, not a constant or an
expression. Formal parameter must be assigned a value. Actual parameter is passed by value.
IN & OUT Mode Example 1

This program finds the minimum of two values. Here, the procedure takes two numbers using
the IN mode and returns their minimum using the OUT parameters.

DECLARE

a number;

b number;

c number;

PROCEDURE findMin(x IN number, y IN number, z OUT number) IS

BEGIN

IF x < y THEN

z:= x;

ELSE

z:= y;

END IF;

END;

BEGIN

a:= 23;

b:= 45;

findMin(a, b, c);

dbms_output.put_line(' Minimum of (23, 45) : ' || c);

END;

When the above code is executed at the SQL prompt, it produces the following result −

Minimum of (23, 45) : 23

PL/SQL procedure successfully completed.

IN & OUT Mode Example 2


This procedure computes the square of value of a passed value. This example shows how we
can use the same parameter to accept a value and then return another result.

DECLARE

a number;

PROCEDURE squareNum(x IN OUT number) IS

BEGIN

x := x * x;

END;

BEGIN

a:= 23;

squareNum(a);

dbms_output.put_line(' Square of (23): ' || a);

END;

When the above code is executed at the SQL prompt, it produces the following result −

Square of (23): 529

PL/SQL procedure successfully completed.

Methods for Passing Parameters

Actual parameters can be passed in three ways −

● Positional notation

● Named notation

● Mixed notation

Positional Notation

In positional notation, you can call the procedure as −

findMin(a, b, c, d);
In positional notation, the first actual parameter is substituted for the first formal parameter;
the second actual parameter is substituted for the second formal parameter, and so on. So, a is
substituted for x, b is substituted for y, c is substituted for z and d is substituted for m.

Named Notation

In named notation, the actual parameter is associated with the formal parameter using
the arrow symbol ( => ). The procedure call will be like the following −

findMin(x => a, y => b, z => c, m => d);

Mixed Notation

In mixed notation, you can mix both notations in procedure call; however, the positional
notation should precede the named notation.

The following call is legal −

findMin(a, b, c, m => d);

However, this is not legal:

findMin(x => a, b, c, d);

OTHER REFRENCES

● Oracle PL/SQL Stored Procedure & Functions with Examples (guru99.com)

● PL/SQL Tutorial - PL/SQL Stored Procedures. (plsql-tutorial.com)

● PL/SQL - Procedures - Tutorialspoint

SUGGESTED BOOK REFERENCES

● Ramez Elmasri and Shamkant B. Navathe,“Fundamentals of Database System”, The


Benjamin / Cummings Publishing Co.

● Korth and Silberschatz Abraham, “DatabaseSystem Concepts”, McGraw Hall.

● Pratt,”DBMS”, Cengage Learning.

You might also like