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

Complete Course On PL/SQL

Complete Course on PL/SQL with Exercises

Uploaded by

monnah.yans
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Complete Course On PL/SQL

Complete Course on PL/SQL with Exercises

Uploaded by

monnah.yans
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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