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

SQL Introduction by Ravi

PL/SQL is a programming language used to access an Oracle database. It extends SQL with procedural programming constructs like loops and conditionals. There are two types of PL/SQL blocks: anonymous and named. Named blocks like stored procedures and functions can be stored in a database and executed repeatedly. PL/SQL supports various data types and structures like cursors. Control structures allow conditional and iterative processing. Triggers are a type of named block that automatically execute due to data manipulation language events on tables.

Uploaded by

raviitlab
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views

SQL Introduction by Ravi

PL/SQL is a programming language used to access an Oracle database. It extends SQL with procedural programming constructs like loops and conditionals. There are two types of PL/SQL blocks: anonymous and named. Named blocks like stored procedures and functions can be stored in a database and executed repeatedly. PL/SQL supports various data types and structures like cursors. Control structures allow conditional and iterative processing. Triggers are a type of named block that automatically execute due to data manipulation language events on tables.

Uploaded by

raviitlab
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 36

Introduction to PL/SQL

Ravi Kumar.S

Introduction to PL/SQL

What is PL/SQL Why PL/SQL Kinds of PL/SQL BLOCKS

Anonymous or Named Blocks

Named Blocks (Stored procedures, Functions, Triggers) Exceptions Assignments (2)


Slide 2 of 36

What is PL/SQL
PL/SQL is a sophistical programming language used to access an Oracle database from a various environments. PL/SQL stands for Procedural Language/SQL. It extends SQL by adding constructs found in other procedural languages, such as: loops, conditional statements, declared variables, accessing individual records one at a time, and many others.

Slide 3 of 36

Why use PL/SQL


Compared to SQL, PL/SQL has the procedural constructs that are useful to express a desired process from start to end. One block of PL/SQL code can bundled several SQL statements together as a single unit. Making less network traffic and improving application performance. PL/SQL can be integrated with other languages, such as Java, to take advantage of the strongest features of both languages.

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 4 of 36

Kinds of PL/SQL BLOCKS


The basic unit in any PL/SQL PROGRAM is a BLOCK. All PL/SQL programs are composed of a single block or blocks that occur either sequentially or nested within another block. There are two kinds of blocks: Anonymous blocks are generally constructed dynamically and executed only once by the user. It is sort of a complex SQL statement. Named blocks are blocks that have a name associated with them, are stored in the database, and can be executed again and again, can take in parameters, and can modify and existing database.
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 5 of 36

Structure of Anonymous Block


DECLARE
/* Declare section (optional). */ */

BEGIN
/* Executable section (required).

EXCEPTION
/* Exception handling section (optional). */

END;
/

-- end the block (do not forget the ; in the end.)

Slide 6 of 36

Example of Anonymous Block


SET SERVEROUTPUT ON DECLARE v_last_name VARCHAR2(15); v_salary employee.salary%TYPE; CURSOR c_query IS SELECT lname, salary FROM employee; BEGIN OPEN c_query; LOOP FETCH c_query INTO v_last_name, v_salary; IF v_salary >= 40000 THEN DBMS_OUTPUT.PUT_LINE (v_last_name||' '||v_salary); END IF; EXIT WHEN c_query%NOTFOUND; END LOOP; CLOSE c_query; END; /
Slide 7 of 36

PL/SQL Build-In Utility Packages DBMS_OUTPUT.PUT_LINE


SET SERVEROUTPUT ON to allow output to be displayed to the screen DBMS_OUTPUT.PUT_LINE


Usage: DBMS_OUTPUT.PUT_LINE ( Argument ) Argument tendS to resemble the concatenated arguments of the SELECT clause in an SQL query. If the argument is not initialized, then a NULL VALUE will be displayed.

Slide 8 of 36

PL/SQL Build-In Utility Packages


Example
SET SERVEROUTPUT ON DECLARE v_name VARCHAR2(30); v_title VARCHAR2(20); BEGIN v_name := 'James Dullea'; v_title := 'Research Scientist'; DBMS_OUTPUT.PUT_LINE(v_name||' works as a '||v_title); END; /

Slide 9 of 36

Variables and Types


A variable is a storage location that can be read from or assigned to by the program. It is declared in the declarative section within a PL/SQL block.
v_last_name VARCHAR2(15);

Every variable has a specific data type associated with it. Variables can be associated with a table structure.
v_salary employee.salary%TYPE;

Slide 10 of 36

Data Types
Scalar type
Numeric: INT, DEC,NUMBER,BINARY_INTEGER Character: CHAR, CHARACTER, STRING, VARCHAR, VARCHAR2 Boolean: TRUE, FALSE. Date: DATE

Composite types Reference types

RECORD, TABLE, VARRAY CURSORS, OBJECT TYPES

Lob types

BFILE, LOB, CLOB, NLOB

Slide 11 of 36

CURSORS

A cursor is used to process a single row 'at a time' from multiple rows retrieved from the database . Cursors are declared in the Declaration Section.
CURSOR c_query IS SELECT lname, salary FROM employee;

The cursor can be declared for complex queries involving joins and conditions. Cursors must be OPENed to be accessed and CLOSEd before ending the program.
OPEN c_query; CLOSE c_query;

Slide 12 of 36

The FETCH statement is used to retrieve the output of a single record from the CURSOR SELECT statement INTO associate variables.
FETCH c_query INTO v_last_name, v_salary;

CURSORS

Cursors can be opened and closed more than once in a block and if the a WHERE statement exists, the values of the binding variables can be modified. Cursor FOR loop is a special type of for loop which the SQL cursor operations are carried out implicitly.
Slide 13 of 36

Conditional Statements
Conditional Processing The specified conditions are evaluated by the system and the result determines which sequence of statements is to be carried out. IF <boolean expression> THEN <sequence of statements> END IF;
---------------------------------------------------------------------------------------------

IF <boolean expression> THEN <sequence of statements> ELSE <sequence of statements> END IF;

Slide 14 of 36

Conditional Statements (ELSIF)


IF <boolean expression> THEN <sequence of statements> ELSIF <boolean expression> THEN <sequence of statements> ELSIF <boolean expression> THEN <sequence of statements> ELSIF <boolean expression> THEN <sequence of statements> ELSE <sequence of statements> END IF;
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 15 of 36

Loop Structures

Unconstrained loops WHILE loop FOR loop GOTO <<LABEL>>

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 16 of 36

Unconstrained Loops
LOOP <sequence of statements> EXIT WHEN <condition> <sequence of statements> END LOOP;

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 17 of 36

WHILE LOOP
WHILE <condition> LOOP <statements> END LOOP; Note: The loop will continue to process as long as the condition is TRUE or an EXIT (or EXIT WHEN) statement is encountered.
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 18 of 36

FOR LOOP
FOR <loop_counter> IN [REVERSE]

<low bound>..<high bound>

LOOP <sequence of statements> END LOOP;

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 19 of 36

GOTO label; Example:

GOTO statement

The label is defined in the block by being enclosed in double angle brackets. LOOP <sequence of statements> IF <condition> THEN GOTO get_out_of_loop; <sequence of statements> END LOOP; <<get_out_of_loop>>
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 20 of 36

NAMED BLOCKS
The following are types of NAMED BLOCKS Stored Procedures
Similar to an anonymous block except it can be stored in the database, can accept parameters, and can be executed over and over again (with different parameters)

Functions
Type of named blocks that is executed within a DML or SQL statement. It may take in one or more parameters and RETURNs only one value back to the calling application.

Triggers
A named block that executes only when an associated DML statement is executed, such as an INSERT, UPDATE, or DELETE statement.
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 21 of 36

Block Structure for PL/SQL Subprograms

(Procedures or Functions)

Program Comments Header IS|AS Declaration Section BEGIN Executable Section EXCEPTION Exception Section END; /

(optional) (mandatory) (mandatory) (mandatory) (optional) (mandatory)

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 22 of 36

Block Structure for PL/SQL subprograms Completed procedure example


CREATE OR REPLACE PROCEDURE AddDepartment /*Procedure to add rows In the COMPANY.department table */ (p_DepartmentName IN department.dname%TYPE, p_DepartmentNumber IN department.dnumber%TYPE, p_DepartmentManager IN department.mgrssn%TYPE, p_ManagerStartDate IN department.mgrstartdate%TYPE) AS BEGIN INSERT INTO DEPARTMENT(dname, dnumber, mgrssn, mgrstartdate) VALUES (p_DepartmentName, p_DepartmentNumber, p_DepartmentManager, p_ManagerStartDate); COMMIT; END AddDepartment; /

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 23 of 36

Execution of a Stored Functions


EXEC AddDepartment
JUN-2005'); ('Info Center', 43, '888665555', '28-

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 24 of 36

Syntax of a Stored Functions


CREATE OR REPLACE FUNCTION function_name (parameters IN datatypes) RETURN datatype IS|AS Declaration Section BEGIN Executable Section RETURN variable_name EXCEPTION (optional) Exception Section END;
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 25 of 36

Example of a Stored Functions


Given the salary of an employee, calculate the state tax of 2.8% from the salary and return it.

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 26 of 36

Example of a Stored Functions


CREATE OR REPLACE FUNCTION CalcStateTax ( p_salary IN employee.salary%TYPE) RETURN NUMBER AS BEGIN RETURN (p_salary * 0.028); END CalcStateTax; /

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 27 of 36

Execution of a Stored Functions


SELECT fname||' '||lname AS "EMPLOYEE", CalcStateTax(salary) AS "STATE TAX" FROM employee;

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 28 of 36

Execution of a Stored Functions


EMPLOYEE STATE TAX ------------------------------- ---------James Borg 1540 Jennifer Wallace 1204 Franklin Wong 1120 John Smith 840 Alicia Zelaya 700 Ramesh Narayan 1064 Joyce English 700 Ahmad Jabbar 700 8 rows selected.

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 29 of 36

What is a Trigger
Similar to stored procedures and functions. Contains a Declaration, Executable, and Exception sections Differences Triggers are not executed explicitly, they are implicitly execute when a triggering event occurs. (This is called firing the trigger) Triggers do not accept parameters Triggering events are fired by DML Statements ( INSERTs, UPDATEs, or DELETEs) against tables or views AND certain system events
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 30 of 36

Complex integrity constraints are not always possible through declarative constraints enabled at table creation time, such as salary may not be lowered. Auditing information, such as who updated an employee's salary, may be required. Remember triggers happen at the basic DML level. Triggers can signal other application that action needs to take place when changes are made to a table. Example, update employee statistics contained in another table.
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 31 of 36

Why Use Triggers

Block Structure for a PL/SQL Trigger


CREATE [OR REPLACE] TRIGGER trigger_name AFTER | BEFORE | INSTEAD OF a_trigger_event ON table_name (or view_name) [FOR EACH ROW[WHEN trigger_condition]] DECLARE (optional) BEGIN (mandatory)
Executes only when trigger_condition is TRUE on a ROW LEVEL TRIGGER

EXCEPTION (optional) Exception Section END; (mandatory)

NOTE: a_trigger_event may be any combination of an INSERT, DELETE, and/or UPDATE on a table or view
Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 32 of 36

Errors and Error Handling


Errors can be classified into two types:
1) Compile-Time errors and warnings. After compiling use the command SHOW ERRORS use SET ECHO ON to see statement numbers 2) Run-Time errors occur during execution and

throw exception that can be handled by the program.


Dr. James Dullea, CSC8490 Introduction to PL/SQL
Slide 33 of 36

Error Handling
When errors occur during the execution, control will be branched to the exception handling section.

A corresponding error handler will be found to deal with the error.

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 34 of 36

Practice 1
Use the Company database schema, write a stored procedure to add an employee to the employee table, using parameters to input the data. Use your name and following information to test the procedure.
FNAME MINIT LNAME SSN BDATE STREET CITY STATE ZIP SEX SALARY SUPERSSN DNO use your first name use your middle init or a blank space use your last name make up a 9 digit number use your birthday (be careful of the date format) make up data Villanova PA use the Villanova zip code M or F 38000 333445555 5

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 35 of 36

Practice 2
Write a function (called GetDay) that will take in a date as a parameter and return the actual name of the day for that date. Use the function to solve the following problem. Using the data in the employee table from Assignment 1, write an SQL statement or an anonymous block (containing the above function GetDay) that uses your first and last name in a where clause to access the record and returns the actual day of the week that you were born. Hint: GetDay(bdate)

Dr. James Dullea, CSC8490 Introduction to PL/SQL


Slide 36 of 36

You might also like