Procedures in pl/sql, PL-SQL Programming

Procedures 

The procedure is a subprogram which performs a specific action. You write procedures using the syntax as shown below:

PROCEDURE name [(parameter[, parameter, ...])] IS

[local declarations]

BEGIN

executable statements

[EXCEPTION

exception handlers]

END [name];

Where the parameter stand for the following syntax:

parameter_name [IN | OUT [NOCOPY] | IN OUT [NOCOPY]] datatype_name

[{:= | DEFAULT} expression]

The datatype of a parameter cannot be constrained. For illustration, the declaration below of acct_id is illegal as the datatype CHAR is size-constrained:

PROCEDURE reconcile (acct_id CHAR(5)) IS ... - illegal

Though, you can use the workaround below to size-constrain parameter types ultimately:

DECLARE

temp CHAR(5);

SUBTYPE Char5 IS temp%TYPE;

PROCEDURE reconcile (acct_id Char5) IS ...

The procedure has 2 parts: the specification and the body. The procedure specification starts with the keyword PROCEDURE and ends with the procedure name or the parameter list. The Parameter declarations are elective. The Procedures that take no parameters are written without the parentheses.

The procedure body starts with the keyword IS and ends with the keyword END followed by an optional procedure name. The procedure body has 3 parts: a declarative section, an executable section, & an optional exception-handling section.

The declarative section contains the local declarations, that are placed between the keywords IS and BEGIN. The keywords DECLARE, that introduces the declarations in an anonymous PL/SQL block, and is not used. The executable section contains statements that are placed between the keywords BEGIN & EXCEPTION (or END). At least one statement should appear in the executable section of a procedure. The NULL statements meet this necessity. The exception-handling section contains the exception handlers that are placed between the keywords EXCEPTION and END. Consider the procedure raise_salary that increases the salary of an employee by a given amount:

PROCEDURE raise_salary (emp_id INTEGER, amount REAL) IS

current_salary REAL;

salary_missing EXCEPTION;

BEGIN

SELECT sal INTO current_salary FROM emp

WHERE empno = emp_id;

IF current_salary IS NULL THEN

RAISE salary_missing;

ELSE

UPDATE emp SET sal = sal + amount

WHERE empno = emp_id;

END IF;

EXCEPTION

WHEN NO_DATA_FOUND THEN

INSERT INTO emp_audit VALUES (emp_id, 'No such number');

WHEN salary_missing THEN

INSERT INTO emp_audit VALUES (emp_id, 'Salary is null');

END raise_salary;

Whenever called, this procedure accepts an employee number and the salary increase sum. It uses the employee number to select the present salary from the emp database table. When the employee number is not found or if the current salary is null, an exception is raised. Or else, the salary is updated.

The procedure is known as the PL/SQL statement. For illustration, you might call the procedure raise_salary as shown below:

DECLARE

emp_id NUMBER;

amount REAL;

BEGIN

...

raise_salary(emp_id, amount);

Posted Date: 10/5/2012 5:23:17 AM | Location : United States







Related Discussions:- Procedures in pl/sql, Assignment Help, Ask Question on Procedures in pl/sql, Get Answer, Expert's Help, Procedures in pl/sql Discussions

Write discussion on Procedures in pl/sql
Your posts are moderated
Related Questions
Wrapping and unwrapping in SQL Operators WRAP and UNWRAP in connection with attributes whose declared types are tuple types. Example shows how extension and projection can be

Using Cursor Attributes To process the SQL data manipulation statements, the SQL engine must opens an implicit cursor named SQL. This cursor's attributes (%FOUND, %NOTFOUND, %

Definition of FROM - SQL Recall that the operand of FROM is denoted by a commalist, each element of that commalist being a table expression optionally accompanied by a range v

Interesting properties of CROSS JOIN - SQL Compare these with the "interesting properties of JOIN", CROSS JOIN is associative but not commutative. Unlike JOIN and NATURAL JOI

Declaring Exceptions The Exceptions can be declared only in the declarative part of the PL/SQL subprogram, block, or package. By introducing its name, you can declare an excep

Using FORALL and BULK COLLECT Together You can unite the BULK COLLECT clause with the FORALL statement, in that case, the SQL engine bulk-binds column values incrementally. In

Example of GROUPBY Operator Example: How many students sat each exam, using GROUP BY, NATURAL LEFT JOIN, and COALESCE SELECT CourseId, COALESCE (n, 0) AS n FROM COURS

Special cases of projection This section describes the identity projection, r {ALL BUT}, and the projection on no attributes, r { }, which yields TABLE_DUM when r is empty, ot

Need Database Development with Analysis Tools Project Description: I want a database for large governmental and private data sets on one country that can be simply extended t

Example of Table Literal - SQL Example: A Table Literal (correct version) VALUES ('S1', 'C1', 'Anne'), ('S1', 'C2', 'Anne'), ('S2', 'C1', 'Boris'), ('S3', 'C3'