PLSQL Procedures
PLSQL Procedures
PLSQL Procedures
http://www.tutorialspoint.com/plsql/plsql_procedures.htm
Copyright tutorialspoint.com
A subprogram is a program unit/module that performs a particular task. These subprograms are combined to form larger programs. This is basically called the 'Modular design'. A subprogram can be invoked by another subprogram or program, which is called the calling program. A subprogram can be created: At schema level Inside a package Inside a PL/SQL block A schema level subprogram is a standalone subprogram . It is created with the CREATE PROCEDURE or CREATE FUNCTION statement. It is stored in the database and can be deleted with the DROP PROCEDURE or DROP FUNCTION statement. A subprogram created inside a package is a packaged subprogram . It is stored in the database and can be deleted only when the package is deleted with the DROP PACKAGE statement. We will discuss packages in the chapter 'PL/SQL Packages'. PL/SQL subprograms are named PL/SQL blocks that can be invoked with a set of parameters. PL/SQL provides two kinds of subprograms: Functions : these subprograms return a single value, mainly used to compute and return a value. Procedures : these subprograms do not return a value directly, mainly used to perform an action. This chapter is going to cover important aspects of a PL/SQL procedure and we will cover PL/SQL function in next chapter.
S.N. 1
Parts & Description Declarative Part It is an optional part. However, the declarative part for a subprogram does not start with the DECLARE keyword. It contains declarations of types, cursors, constants, variables, exceptions, and nested subprograms. These items are local to the subprogram and cease to exist when the subprogram completes execution. Executable Part This is a mandatory part and contains statements that perform the designated action. Exception-handling This is again an optional part. It contains the code that handles run-time errors.
Creating a Procedure
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 modifying an existing procedure. The optional parameter list contains name, mode and types of the parameters. 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.
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 above code is executed using SQL prompt, it will produce the following result:
Procedure created.
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 SQL prompt, it produces the following result:
Minimum of (23, 45) : 23 PL/SQL procedure successfully completed.
When the above code is executed at SQL prompt, it produces the following result:
Square of (23): 529 PL/SQL procedure successfully completed.
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 ( => ). So the procedure call would look like:
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);