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

Complete Course On PL/SQL

Complete Course on PL/SQL with Exercises

Uploaded by

monnah.yans
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Complete Course On PL/SQL

Complete Course on PL/SQL with Exercises

Uploaded by

monnah.yans
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Complete Course on PL/SQL with Exercises

Yanis Monnah
November 22, 2024

Contents
1 Introduction to PL/SQL 2

2 Basic Structure of a PL/SQL Block 2

3 Conditional Statements and Loops 2


3.1 IF/ELSE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 FOR Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.3 WHILE Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4 Cursors 3
4.1 Explicit Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

5 Stored Procedures 3
5.1 Create a Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5.2 Execute a Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

6 Functions 4
6.1 Create a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
6.2 Use a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

7 Triggers 4
7.1 Create a Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

8 Error Handling 4
8.1 Error Handling Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

9 Practical Exercise 5
9.1 Create a Database: Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
9.2 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1
1 Introduction to PL/SQL
PL/SQL (Procedural Language/SQL) is an extension of SQL that adds programming constructs
such as loops, conditions, procedures, etc. It is primarily used for:
• Automating repetitive tasks;

• Implementing business logic within the database;

• Optimizing application performance by grouping multiple SQL commands in a single


block.

2 Basic Structure of a PL/SQL Block


A PL/SQL block has three main parts:
1 DECLARE
2 -- Variable declarations
3 BEGIN
4 -- Executable instructions
5 EXCEPTION
6 -- Error handling
7 END ;

Example:
1 DECLARE
2 v_message VARCHAR2 (50) ;
3 BEGIN
4 v_message := ’ Hello ␣ PL / SQL ! ’;
5 DBMS_OUTPUT . PUT_LINE ( v_message ) ;
6 END ;

3 Conditional Statements and Loops


3.1 IF/ELSE Statement
1 DECLARE
2 v_score NUMBER := 75;
3 BEGIN
4 IF v_score >= 50 THEN
5 DBMS_OUTPUT . PUT_LINE ( ’ Passed ’) ;
6 ELSE
7 DBMS_OUTPUT . PUT_LINE ( ’ Failed ’) ;
8 END IF ;
9 END ;

3.2 FOR Loop


1 BEGIN
2 FOR i IN 1..5 LOOP
3 DBMS_OUTPUT . PUT_LINE ( ’ Iteration : ␣ ’ || i ) ;
4 END LOOP ;
5 END ;

2
3.3 WHILE Loop
1 DECLARE
2 v_counter NUMBER := 1;
3 BEGIN
4 WHILE v_counter <= 3 LOOP
5 DBMS_OUTPUT . PUT_LINE ( ’ Counter : ␣ ’ || v_counter ) ;
6 v_counter := v_counter + 1;
7 END LOOP ;
8 END ;

4 Cursors
4.1 Explicit Cursor
1 DECLARE
2 CURSOR cur_emp IS SELECT first_name , salary FROM employees ;
3 v_name employees . first_name % TYPE ;
4 v_salary employees . salary % TYPE ;
5 BEGIN
6 OPEN cur_emp ;
7 LOOP
8 FETCH cur_emp INTO v_name , v_salary ;
9 EXIT WHEN cur_emp % NOTFOUND ;
10 DBMS_OUTPUT . PUT_LINE ( ’ Employee : ␣ ’ || v_name || ’␣ -␣ Salary : ␣ ’ ||
v_salary ) ;
11 END LOOP ;
12 CLOSE cur_emp ;
13 END ;

5 Stored Procedures
5.1 Create a Procedure
1 CREATE OR REPLACE PROCEDURE greet_user ( p_name IN VARCHAR2 ) IS
2 BEGIN
3 DBMS_OUTPUT . PUT_LINE ( ’ Hello , ␣ ’ || p_name || ’! ’) ;
4 END ;

5.2 Execute a Procedure


1 BEGIN
2 greet_user ( ’ Yanis ’) ;
3 END ;

3
6 Functions
6.1 Create a Function
1 CREATE OR REPLACE FUNCTION calculate_tax ( p_salary IN NUMBER ) RETURN NUMBER
IS
2 v_tax NUMBER ;
3 BEGIN
4 v_tax := p_salary * 0.2;
5 RETURN v_tax ;
6 END ;

6.2 Use a Function


1 DECLARE
2 v_tax NUMBER ;
3 BEGIN
4 v_tax := calculate_tax (5000) ;
5 DBMS_OUTPUT . PUT_LINE ( ’ Tax : ␣ ’ || v_tax ) ;
6 END ;

7 Triggers
7.1 Create a Trigger
1 CREATE OR REPLACE TRIGGER t r g _ a f t e r _ i n s e r t _ e m p l o y e e
2 AFTER INSERT ON employees
3 FOR EACH ROW
4 BEGIN
5 DBMS_OUTPUT . PUT_LINE ( ’ New ␣ employee ␣ added : ␣ ’ || : NEW . first_name ) ;
6 END ;

8 Error Handling
8.1 Error Handling Example
1 DECLARE
2 v_num NUMBER ;
3 BEGIN
4 BEGIN
5 v_num := 10 / 0; -- Error !
6 EXCEPTION
7 WHEN ZERO_DIVIDE THEN
8 DBMS_OUTPUT . PUT_LINE ( ’ Error : ␣ Division ␣ by ␣ zero ’) ;
9 END ;
10 END ;

4
9 Practical Exercise
9.1 Create a Database: Library
1 CREATE TABLE books (
2 book_id NUMBER PRIMARY KEY ,
3 title VARCHAR2 (100) ,
4 author VARCHAR2 (50) ,
5 price NUMBER
6 );
7
8 CREATE TABLE transactions (
9 transaction_id NUMBER PRIMARY KEY ,
10 book_id NUMBER REFERENCES books ( book_id ) ,
11 transaction_date DATE ,
12 transaction_type VARCHAR2 (10) -- ’ BORROW ’ or ’ RETURN ’
13 );
14
15 INSERT INTO books VALUES (1 , ’ Oracle ␣ PL / SQL ␣ Programming ’ , ’ Steven ␣ Feuerstein
’ , 50) ;
16 INSERT INTO books VALUES (2 , ’ Database ␣ Systems ’ , ’ Elmasri ’ , 40) ;
17 INSERT INTO books VALUES (3 , ’ SQL ␣ Fundamentals ’ , ’ Ben ␣ Forta ’ , 30) ;

9.2 Exercises
1. Create a Procedure to Add a Book:
1 CREATE OR REPLACE PROCEDURE add_book ( p_title IN VARCHAR2 , p_author
IN VARCHAR2 , p_price IN NUMBER ) IS
2 BEGIN
3 INSERT INTO books ( book_id , title , author , price )
4 VALUES ( books_seq . NEXTVAL , p_title , p_author , p_price ) ;
5 END ;

2. Create a Function to Calculate Total Price of Books:


1 CREATE OR REPLACE FUNCTION c a l c u l a t e _ t o t a l _ p r i c e RETURN NUMBER IS
2 v_total NUMBER ;
3 BEGIN
4 SELECT SUM ( price ) INTO v_total FROM books ;
5 RETURN v_total ;
6 END ;

3. Create a Trigger to Log Transactions:


1 CREATE OR REPLACE TRIGGER t r g _ a f t e r _ t r a n s a c t i o n
2 AFTER INSERT ON transactions
3 FOR EACH ROW
4 BEGIN
5 DBMS_OUTPUT . PUT_LINE ( ’ Transaction ␣ added : ␣ ’ || : NEW .
transaction_id ) ;
6 END ;

5
4. Create a Loop to Display All Books:
1 DECLARE
2 CURSOR cur_books IS SELECT title , author FROM books ;
3 v_title books . title % TYPE ;
4 v_author books . author % TYPE ;
5 BEGIN
6 OPEN cur_books ;
7 LOOP
8 FETCH cur_books INTO v_title , v_author ;
9 EXIT WHEN cur_books % NOTFOUND ;
10 DBMS_OUTPUT . PUT_LINE ( ’ Book : ␣ ’ || v_title || ’␣ -␣ Author : ␣ ’ ||
v_author ) ;
11 END LOOP ;
12 CLOSE cur_books ;
13 END ;

You might also like