|
||||||||||||||||
Procedures
Время создания: 07.09.2017 23:26
Текстовые метки: knowledge
Раздел: PL/SQL - Tutorial
Запись: xintrea/mytetra_db_mcold/master/base/1504815973d948nmc802/text.html на raw.githubusercontent.com
|
||||||||||||||||
|
||||||||||||||||
PL/SQL - Procedures Advertisements In this chapter, we will discuss Procedures in PL/SQL. 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 the schema level, subprogram is a standalone subprogram. It is created with the CREATE PROCEDURE or the 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 −
This chapter is going to cover important aspects of a PL/SQL procedure. We will discuss PL/SQL function in the next chapter. Parts of a PL/SQL Subprogram Each PL/SQL subprogram has a name, and may also have a parameter list. Like anonymous PL/SQL blocks, the named blocks will also have the following three parts −
Creating a Procedure A procedure is created with the CREATE OR REPLACE PROCEDUREstatement. 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,
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 −
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 −
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 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); |
||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||
|
||||||||||||||||
|