0% found this document useful (0 votes)
29 views

Unit - 4

The document discusses procedures and functions in PL/SQL. It defines what they are, compares their syntax and usage, and provides examples of creating and calling procedures and functions. Procedures perform actions but don't return values while functions return a single value.

Uploaded by

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

Unit - 4

The document discusses procedures and functions in PL/SQL. It defines what they are, compares their syntax and usage, and provides examples of creating and calling procedures and functions. Procedures perform actions but don't return values while functions return a single value.

Uploaded by

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

Unit – 4: Functions and Procedures

1
Topics
1. What is Procedure ?
2. Syntax for Procedure
3. Procedure Parameters
4. Comparison between various procedure parameters
5. How to execute OR run a procedure?
6. Deleting a procedure
7. Procedure Examples
8. What is User Defined Function?
9. Syntax for Function
10.How to execute OR run a function?
11.Function Examples
12.Difference between stored procedure and function
2
What is Procedure ?
 A stored procedure is a group of SQL and PL/SQL
commands that execute certain task.
 A procedure is a group of PL/SQL statements that
you can call by name.
 A procedure is a module performing one or more
actions , it does not need to return any values
 The user must call a procedure either from a
program or manually.
 Several users or applications can use a procedure.
3
Syntax for Procedure
CREATE [OR REPLACE] PROCEDURE <PROCEDURE_NAME>
[Parameter1 {IN, OUT, IN OUT}, [Parameter2 {IN, OUT, IN
OUT},...]]
{IS/AS}
[CONSTANT / VARIABLE Declaration;]
BEGIN
Executable statements;
[EXCEPTION
Exception handling statements;]
END;

4
Syntax for Procedure
 Procedure-name specifies the name of the
procedure.
 [OR REPLACE] option allows modifying an existing
procedure. It is optional.
 IN represents that value will be passed from
outside and OUT represents that this parameter 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.
5
Procedure Parameters
 IN - This parameter passes a value into the
program. This value is read only type of value. It
cannot be change. It is the default mode.
 OUT - The OUT parameter passes a value back
from the program. This value is write only value
(printable value).
 IN OUT - This parameter passes the value into
the program and returns the value from the
program. This value is read and then it is written.
6
Procedure Parameters
 Comparison between the procedure parameters:
IN OUT IN OUT
Default mode Must be specified Must be specified
Passed into subprogram;
Value is passed into Returned to calling
returned to calling
subprogram environment
environment

Formal parameter acts as a


Uninitialized variable Initialized variable
constant

Actual parameter can be a


literal, expression,
Must be a variable Must be a variable
constant, or initialized
variable

Can be assigned a default Cannot be assigned a Cannot be assigned a


value default value default value
7
HOW TO EXECUTE OR RUN A PROCEDURE ?
SQL > SELECT * FROM <Table-name>;
SQL > @ <Procedure-file name>.SQL;
Procedure is successfully created…
OR
Procedure is created with compilation error…
SQL > SHOW ERRORS;
OR
SQL > SELECT * FROM USER_ERRORS;

SQL > EXECUTE <Procedure-name> (Parameter Value);


SQL > SELECT * FROM <Table-name>;

NOTE: - If your user doesn’t have EXECUTE permission then write


the following command.
SQL>GRANT EXECUTE ON <PROCEDURE-NAME> TO <USER-NAME>; 8
Deleting a Procedure
 SYNTAX FOR DELETING A PROCEDURE:

DROP PROCEDURE <PROCEDURE_NAME>;

 EXAMPLE OF DELETING A PROCEDURE:

DROP PROCEDURE PROC1;

9
Examples
Example 1:
-- The following example creates a simple procedure that displays the
string 'Hello World!' on the screen when executed. (pe1.sql)

CREATE OR REPLACE PROCEDURE greetings AS

BEGIN
dbms_output.put_line('Hello World!');
END;
/

SQL>@pe1.sql;
SQL>execute greetings;
10
Examples
Example 2:
-- Write a simple procedure without any parameter that updates the values in
the EMP table. (pe2.SQL)

CREATE OR REPLACE PROCEDURE RAISE_SAL


IS
BEGIN
UPDATE EMP SET SAL = SAL+ SAL*0.10;
END;
/

SQL>@P_RAISE_SAL.SQL;
SQL>EXECUTE RAISE_SAL;
11
Examples
Example 3:
-- Write a simple procedure that increases by the salary of employees for the
given department no by percentage inputted by the user using IN parameter.
(pe3.SQL)

CREATE OR REPLACE PROCEDURE RAISE_SAL2


(VDEPT IN EMP.DEPTNO %TYPE, VPER IN NUMBER) IS
BEGIN
UPDATE EMP SET SAL = SAL + SAL*(VPER/100) WHERE DEPTNO=VDEPT;
END;
/
SQL>@pe3.SQL;
SQL>EXECUTE RAISE_SAL2 (10,20);
12
Examples
Example 4:
-- Write a procedure that search’s whether the given employee number is present or not in
the table. (pe4.SQL)
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE SEARCH_EMP
(VEMPNO IN NUMBER,VNAME OUT VARCHAR2)
IS
BEGIN
SELECT ENAME INTO VNAME FROM EMP WHERE EMPNO=VEMPNO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (TO_CHAR(VEMPNO) || 'NOT FOUND');
END;
/
SQL>@pe4.SQL;
SQL>VARIABLE EMP_NAME VARCHAR2(20);
SQL>EXECUTE SEARCH_EMP(101,:EMP_NAME);
SQL>PRINT EMP_NAME;
13
Examples
Example 5:
-- Write a PL/SQL block to call the SEARCH_EMP procedure. (pl5.sql)
SET SERVEROUTPUT ON
DECLARE
VEMPNO EMP.EMPNO%TYPE;
M_NAME EMP.ENAME%TYPE;
BEGIN
SEARCH_EMP (&VEMPNO, M_NAME);
DBMS_OUTPUT.PUT_LINE ('THE EMPLOYEE IS- ' || M_NAME || 'FOR GIVEN EMPLOYEE
NO);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (TO_CHAR (VEMPNO) || 'NOT FOUND');
END;
/
14
Examples
Example 6:
-- Write a procedure that shows the use of INOUT parameter. (pl6.sql)
CREATE OR REPLACE PROCEDURE PS (no1 IN OUT NUMBER)
IS
BEGIN
no1:=no1*no1;
END;
/
SQl > VARIABLE V NUMBER;
SQl > EXEC :V:=2;
SQL> EXECUTE PS(:V);
SQL> PRINT V;
15
What is User Defined Function ?
 Functions are also collection of SQL and PL/SQL
code, which can return a value to the caller or to
caller PL/SQL block.
 A function is similar to a stored procedure. The
main difference between them is that function
returns a single value and a stored procedure
doesn’t return a value.
 Functions can accept one, many, or no parameters,
but a function must have a return clause in the
executable section of the function.
16
Syntax for Function
CREATE [OR REPLACE] FUNCTION <FUNCTION_NAME>
[Parameter1 {IN}, [Parameter2 {IN},...]]
RETURN DataType
{IS/AS}
[CONSTANT / VARIABLE Declaration;]
BEGIN
Executable statements;
[EXCEPTION
Exception handling statements;]
RETURN Return_value;
END;
17
Syntax for Function
 function-name specifies the name of the
function.
 [OR REPLACE] option allows modifying an
existing function.
 The function must contain a return statement.
 RETURN clause specifies that data type you are
going to return from the function.
 function-body contains the executable part.
18
HOW TO EXECUTE OR RUN A FUNCTION ?
 SQL > @ <function-filename>.SQL;
 SQL > SHOW ERRORS;
OR
 SQL > SELECT * FROM USER_ERRORS;
 SQL > VARIABLE <VARIABLE_NAME> datatype;
 SQL> EXECUTE :<VARIABLE_NAME>: =<function-
name>(Parameter Value);
 SQL > PRINT <VARIABLE_NAME>;
OR
Write a PL/SQL block that calls the function
NOTE: - If your user doesn’t have EXECUTE permission then write
the following command.
SQL> GRANT EXECUTE ON <FUNCTION-NAME> TO <USER-NAME>;
19
Examples
Example 7:
-- Write a function that returns the total number of EMPLOYEES in the emp
table. (f1.sql):

CREATE OR REPLACE FUNCTION total_emp


RETURN number
IS
total number(2) := 0;
BEGIN
SELECT count(*) into total FROM emp;
RETURN total;
END;
/
20
How to call a function from command line ?
Example 7:

SQL> @ F:/PLSQL/f1.sql;
SQL> var mno number;
SQL> execute :mno:=total_emp;
PL/SQL procedure successfully completed.
SQL> print mno;
MNO
----------
14
21
How to call a function from separate pl block?
Example 8:
-- Write a pl block that calls a total_emp function of example 7 (cf1.sql).

SET SERVEROUTPUT ON
DECLARE
VNO NUMBER(5);
BEGIN
VNO:=total_emp;
DBMS_OUTPUT.PUT_LINE('Total no of records in emp table are:- '||
VNO);
END;
/
22
Examples
Example 9:
-- Write a function that computes and returns the maximum of two values (f2.sql).
CREATE OR REPLACE FUNCTION FindMax(x IN number, y IN number)
RETURN number
IS
z number;
BEGIN
IF x > y THEN
z:= x;
ELSE
Z:= y;
END IF;
RETURN z;
END;
/
23
Examples
Example 10:
-- Write a function that returns the square of the given number
(f3.sql)

CREATE OR REPLACE FUNCTION FSQUARE (NO IN NUMBER)


RETURN NUMBER
IS
BEGIN
RETURN NO*NO;
END;
/
24
Examples
Example 11:
-- Write a function that returns balance for given account number. (f4.sql)
CREATE OR REPLACE FUNCTION BANK (M_ACNO IN NUMBER)
RETURN NUMBER
IS
M_BAL ACCOUNT.BAL%TYPE;
BEGIN
SELECT BAL INTO M_BAL FROM ACCOUNT WHERE ACNO = M_ACNO;
RETURN M_BAL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0;
END;
/
25
Difference between a Procedure and Function

26

You might also like