PL - SQL Experiments
PL - SQL Experiments
1. CODE:
DECLARE
num Number(5) := :num; -- Variable Decration
BEGIN
If (num < 0) then -- Condition to check whether number is negative
dbms_output.put_line('Number is Negative');
Else -- If num is positive
dbms_output.put_line('Number is Positive');
End if;
INPUT:
OUTPUT:
Number is Negative
Program Executed By Ibrahim Kazi Roll No 31
2. CODE:
DECLARE
age Number(5) := :age; -- Variable Decration
BEGIN
If (age > 18) then -- Condition to check whether age is greater than 18
dbms_output.put_line('You can vote');
Else -- If age is not greater than 18
dbms_output.put_line('You cannot vote');
End if;
INPUT:
OUTPUT:
You cannot vote
Program Executed By Ibrahim Kazi Roll No 31
EXERCISE
3. CODE:
DECLARE
percentage Number(5) := :percentage; -- Variable Decration
BEGIN
If (percentage >= 75) then -- Condition to check DISTINCTION
dbms_output.put_line('Distinction');
Elsif (percentage >= 60 and percentage < 75) then -- Condition to check FIRST
CLASS
dbms_output.put_line('First Class');
Elsif (percentage >= 45 and percentage < 60) then -- Condition to check SECOND
CLASS
dbms_output.put_line('Second Class');
Elsif (percentage >= 40 and percentage < 45) then -- Condition to check PASS
CLASS
dbms_output.put_line('Pass Class');
Else -- For FAIL
dbms_output.put_line('Fail');
End if;
END;
INPUT:
OUTPUT:
Distinction
Program Executed By Ibrahim Kazi Roll No 31
EXERCISE
1. CODE:
DECLARE
i Number; -- Variable Decration
BEGIN
For i in 1..10 -- For Loop Condition
Loop
dbms_output.put_line('5 x ' || i || ' = ' || i*5); -- Multiplication Process
End Loop;
dbms_output.put_line('Program Executed By Ibrahim Kazi Roll No 31');
END;
OUTPUT:
5x1=5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
Program Executed By Ibrahim Kazi Roll No 31
2. CODE:
DECLARE
num Number(2) := 10; -- Variable Decration
fact Number := 1;
BEGIN
While(num > 0) -- While Loop Condition
Loop
fact:= fact * num; -- Factorial Calculation
num := num - 1; -- Decrement of
Number
End Loop;
dbms_output.put_line('Factorial of 10 = ' || fact); -- Displaying Factorial
dbms_output.put_line('Program Executed By Ibrahim Kazi Roll No 31');
END;
EXERCISE
OUTPUT:
Factorial of 10 = 3628800
Program Executed By Ibrahim Kazi Roll No 31
3. CODE:
DECLARE
i Number; -- Variable Declaration
j Number;
flag Number(1) := 0;
counter Number := 1;
BEGIN
For i in 1..50 -- While Loop Condition
Loop
flag := 0;
If (i = 2) then
dbms_output.put_line(i);
Else
For j in 2..i-1
Loop
if( mod(i, j) = 0) then
flag := 1;
exit;
End If;
End Loop;
END;
EXERCISE
OUTPUT:
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
Number Of Prime Numbers = 16
Program Executed By Ibrahim Kazi Roll No 31
EXERCISE
1. CODE:
DECLARE
sum_even Number := 0; -- Variable Declaration
i Number := 1;
BEGIN
For i in 1..10 -- For Loop Condition
Loop
If mod(i,2) != 0 then
CONTINUE; -- Skipping Even Numbers
End If;
OUTPUT:
Sum of Odd Numbers between 1 and 10 = 30
Program Executed By Ibrahim Kazi Roll No 31
2.CODE:
DECLARE
num Number := 1; -- Variable Declaration
BEGIN
while num <= 10 -- While Loop Condition
Loop
If num = 5 then
GOTO skip; -- Skipping Number 5
End If;
OUTPUT:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 6
Number: 7
Number: 8
Number: 9
Number: 10
Program Executed By Ibrahim Kazi Roll No 31
3.CODE:
DECLARE
day Number := :day; -- Variable Declaration
BEGIN
CASE day -- Case block based on day
WHEN 1 THEN dbms_output.put_line('Monday'); -- For 1
WHEN 2 THEN dbms_output.put_line('Tuesday'); -- For 2
WHEN 3 THEN dbms_output.put_line('Wednesday'); -- For 3
WHEN 4 THEN dbms_output.put_line('Thursday'); -- For 4
WHEN 5 THEN dbms_output.put_line('Friday'); -- For 5
WHEN 6 THEN dbms_output.put_line('Saturday'); -- For 6
WHEN 7 THEN dbms_output.put_line('Sunday'); -- For 7
ELSE dbms_output.put_line('Invalid Input'); -- default
END CASE;
INPUT:
OUTPUT:
Saturday
Program Executed By Ibrahim Kazi Roll No 31
EXERCISE
1.CODE:
CREATE TABLE STUDENTS (ROLLNO NUMBER(2), NAME VARCHAR(50), DEPT
VARCHAR(20));
BEGIN
INSERT INTO STUDENTS VALUES(1, 'IBRAHIM', 'COMPUTER');
INSERT INTO STUDENTS VALUES(2, 'RUSHIL', 'COMPUTER');
INSERT INTO STUDENTS VALUES(3, 'TANMAY', 'ELECTRONICS');
INSERT INTO STUDENTS VALUES(4, 'SOHAM', 'COMPUTER');
INSERT INTO STUDENTS VALUES(5, 'KAVISH', 'MECHANICAL');
END;
DECLARE
CURSOR STUDENT_CURSOR IS
SELECT ROLLNO, NAME FROM STUDENTS
WHERE DEPT='COMPUTER';
CURSOR_ROW STUDENT_CURSOR%ROWTYPE;
BEGIN
OPEN STUDENT_CURSOR; - - OPENING THE CURSOR
LOOP
FETCH STUDENT_CURSOR INTO CURSOR_ROW; --FETCHING ROW
EXIT WHEN STUDENT_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(CURSOR_ROW.ROLLNO || ' ' ||
CURSOR_ROW.NAME);
END LOOP;
CLOSE STUDENT_CURSOR;
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31');
END;
OUTPUT:
1 IBRAHIM
2 RUSHIL
4 SOHAM
PROGRAM EXECUTED BY IBRAHIM KAZI 31
EXERCISE
2. CODE
BEGIN
INSERT INTO STUDENTS VALUES(1, 'IBRAHIM', 'COMPUTER');
INSERT INTO STUDENTS VALUES(2, 'RUSHIL', 'COMPUTER');
INSERT INTO STUDENTS VALUES(3, 'TANMAY', 'ELECTRONICS');
INSERT INTO STUDENTS VALUES(4, 'SOHAM', 'COMPUTER');
INSERT INTO STUDENTS VALUES(5, 'KAVISH', 'MECHANICAL');
INSERT INTO STUDENTS VALUES(6, 'RAJ', 'COMPUTER');
INSERT INTO STUDENTS VALUES(7, 'HASAN', 'AUTOMATION');
END;
1 IBRAHIM COMPUTER
2 RUSHIL COMPUTER
3 TANMAY ELECTRONICS
4 SOHAM COMPUTER
5 KAVISH MECHANICAL
6 RAJ COMPUTER
7 HASAN AUTOMATION
DECLARE
CURSOR STUDENT_CURSOR IS
SELECT ROLLNO, NAME FROM STUDENTS
WHERE DEPT='COMPUTER';
COUNTER NUMBER := 0;
CURSOR_ROW STUDENT_CURSOR%ROWTYPE;
BEGIN
OPEN STUDENT_CURSOR;
LOOP
FETCH STUDENT_CURSOR INTO CURSOR_ROW;
EXIT WHEN STUDENT_CURSOR%NOTFOUND;
COUNTER := COUNTER + 1;
END LOOP;
CLOSE STUDENT_CURSOR;
EXERCISE
OPEN STUDENT_CURSOR;
FOR I IN 1..COUNTER LOOP
FETCH STUDENT_CURSOR INTO CURSOR_ROW;
EXIT WHEN STUDENT_CURSOR%NOTFOUND;
IF (MOD(I,2) = 0 ) THEN
DBMS_OUTPUT.PUT_LINE(CURSOR_ROW.ROLLNO || ' ' ||
CURSOR_ROW.NAME);
END IF;
END LOOP;
CLOSE STUDENT_CURSOR;
END;
OUTPUT:
2 RUSHIL
6 RAJ
3. CODE:
BEGIN
INSERT INTO STORE VALUES('Play Station 5', 45000);
INSERT INTO STORE VALUES('T-Shirt', 800);
INSERT INTO STORE VALUES('Lego Set', 2000);
INSERT INTO STORE VALUES('Laptop', 60000);
INSERT INTO STORE VALUES('Board Games', 5000);
INSERT INTO STORE VALUES('Nintendo Switch', 22000);
INSERT INTO STORE VALUES('Smartphone', 75000);
END;
NAME PRICE
DECLARE
CURSOR STORE_CURSOR IS
SELECT NAME, PRICE FROM STORE
WHERE PRICE > 10000;
CURSOR_ROW STORE_CURSOR%ROWTYPE;
BEGIN
OPEN STORE_CURSOR; -- OPENING THE CURSOR
LOOP
FETCH STORE_CURSOR INTO CURSOR_ROW; --FETCHING ROW
EXIT WHEN STORE_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(CURSOR_ROW.NAME || ' ' ||
CURSOR_ROW.PRICE);
END LOOP;
CLOSE STORE_CURSOR;
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31');
END;
OUTPUT:
Play Station 5 45000
Laptop 60000
Nintendo Switch 22000
Smartphone 75000
PROGRAM EXECUTED BY IBRAHIM KAZI 31
EXERCISE
1. CODE:
DECLARE -- VARIABLE DECLARATION
a NUMBER := :a;
b NUMBER := :b;
c NUMBER;
BEGIN
c := a/b; -- PERFORMING DIVISION
EXCEPTION
-- DEFINING EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE('DIVISION BY ZERO NOT POSSIBLE');
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' ||
SYSDATE);
END;
INPUT:
OUTPUT:
8/4=2
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
INPUT:
OUTPUT:
DIVISION BY ZERO NOT POSSIBLE
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
EXERCISE
2. CODE:
BEGIN
INSERT INTO EMPLOYEE VALUES (1, 300000.00);
INSERT INTO EMPLOYEE VALUES (2, 40000.00);
INSERT INTO EMPLOYEE VALUES (3, 800000.00);
INSERT INTO EMPLOYEE VALUES (4, 350000.00);
INSERT INTO EMPLOYEE VALUES (5, 400000.00);
END;
ID SAL
1 300000
2 40000
3 800000
4 350000
5 400000
BEGIN
SELECT SAL INTO e_sal FROM EMPLOYEE WHERE ID = e_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('EMPLOYEE ID NOT FOUND');
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' ||
SYSDATE);
END;
EXERCISE
INPUT:
OUTPUT:
ID: 3
SALARY: 800000
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
INPUT:
OUTPUT:
EMPLOYEE ID NOT FOUND
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
EXERCISE
1. CODE:
BEGIN
IF b > a THEN
RAISE DIV_GREATER;
END IF;
EXCEPTION
-- DEFINING EXCEPTION
WHEN DIV_GREATER THEN
DBMS_OUTPUT.PUT_LINE('DIVISOR IS GREATER THAN DIVIDEND');
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' ||
SYSDATE);
INPUT:
OUTPUT:
10/8=1.25
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
EXERCISE
INPUT:
OUTPUT:
DIVISOR IS GREATER THAN DIVIDEND
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
INPUT:
OUTPUT:
DIVISION BY ZERO NOT POSSIBLE
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
EXERCISE
2. CODE:
BEGIN
INSERT INTO CUSTOMER VALUES (1, 'IBRAHIM');
INSERT INTO CUSTOMER VALUES (2, 'RUSHIL');
INSERT INTO CUSTOMER VALUES (3, 'TANMAY');
INSERT INTO CUSTOMER VALUES (4, 'SOHAM');
INSERT INTO CUSTOMER VALUES (5, 'KAVISH');
END;
BEGIN
IF id <= 0 THEN
RAISE INVALID_ID;
ELSE
SELECT NAME INTO n FROM CUSTOMER WHERE CUSTOMER_ID=id;
DBMS_OUTPUT.PUT_LINE('ID: ' || id);
DBMS_OUTPUT.PUT_LINE(' NAME: ' || n);
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' ||
SYSDATE);
END IF;
EXCEPTION
WHEN INVALID_ID THEN
DBMS_OUTPUT.PUT_LINE('ID SHOULD BE GREATER THAN 0');
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' ||
SYSDATE);
INPUT:
OUTPUT:
ID: 1
NAME: IBRAHIM
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
INPUT:
OUTPUT:
ID SHOULD BE GREATER THAN 0
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
INPUT:
OUTPUT:
NO CUSTOMER OF ID 10 EXISTS
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
EXERCISE
1. CODE;
--CREATING PROCEDURE
CREATE OR REPLACE PROCEDURE EMP_COUNT (D IN NUMBER, C OUT NUMBER)
IS
BEGIN
SELECT COUNT(*)
INTO C
FROM EMP
JOIN DEPT
ON EMP.DEPTNO = DEPT.DEPTNO
WHERE DEPT.DEPTNO = D;
END;
--USING PROCEDURE
DECLARE
C NUMBER;
BEGIN
EMP_COUNT(:ENTER_DEPT, C);
DBMS_OUTPUT.PUT_LINE('EMPLOYEES = ' || C);
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' || SYSDATE);
END;
INPUT:
OUTPUT:
EMPLOYEES = 3
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/26/2024
2. CODE:
-- CREATING
CREATE OR REPLACE PROCEDURE GREET (NAME IN VARCHAR)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO ' || NAME);
END;
EXERCISE
OUTPUT:
Procedure created.
OUTPUT:
HELLO IBRAHIM
3. CODE:
CREATE TABLE EMP (ID NUMBER(5), NAME VARCHAR(20));
--Creating Procedure
CREATE OR REPLACE PROCEDURE EMP_INSERT(I IN NUMBER, N IN VARCHAR)
IS
BEGIN
INSERT INTO EMP VALUES (I, N);
END;
--Using Procedure
BEGIN
FOR I IN 1..3 LOOP
EMP_INSERT(I, 'A');
END LOOP;
END;
--Viewing Output
SELECT * FROM EMP;
OUTPUT:
ID NAME
1 A
2 A
3 A
EXERCISE
1. CODE:
ELSIF (A = B) THEN
RETURN A;
END IF;
END;
MAX_NUM(8,12)
12
BEGIN
DBMS_OUTPUT.PUT_LINE('MAX OF ' || A || ' ' || B || ' = ' || MAX_NUM(A,B));
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' || SYSDATE);
END;
OUTPUT:
MAX OF 7 31 = 31
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/30/2024
EXERCISE
2. CODE:
FACTORIAL(5)
3125
BEGIN
DBMS_OUTPUT.PUT_LINE('FACTORIAL = ' || FACTORIAL(:ENTER_NUM));
DBMS_OUTPUT.PUT_LINE('PROGRAM EXECUTED BY IBRAHIM KAZI 31 ' || SYSDATE);
END;
INPUT:
OUTPUT:
FACTORIAL = 46656
PROGRAM EXECUTED BY IBRAHIM KAZI 31 09/30/2024
EXERCISE
1. CODE:
BEGIN
DBMS_OUTPUT.PUT_LINE('TRIGGER BY IBRAHIM KAZI 31 '|| SYSDATE);
CASE
WHEN INSERTING THEN
IF :NEW.SAL < 5000 THEN
RAISE_APPLICATION_ERROR(-20001, 'CANNOT PERFORM AS SALARY IS
BELOW 5000');
END IF;
INPUT:
INSERT INTO EMP VALUES (7936, 'IBRAHIM', 'PRESIDENT', NULL, SYSDATE, 10000, NULL,
20);
OUTPUT:
TRIGGER BY IBRAHIM KAZI 31 10/03/2024
1 row(s) inserted.
INPUT:
INSERT INTO EMP VALUES (7938, 'RUSHIL', 'MANAGER', NULL, SYSDATE, 1000, NULL,
20);
OUTPUT:
EXERCISE
INPUT:
UPDATE EMP SET SAL = 9000 WHERE EMPNO = 7936;
OUTPUT:
TRIGGER BY IBRAHIM KAZI 31 10/03/2024
1 row(s) updated.
INPUT:
UPDATE EMP SET SAL = 4000 WHERE EMPNO = 7936;
OUTPUT:
2. CODE:
BEGIN
RAISE_APPLICATION_ERROR(-20009, 'CANNOT UPDATE ON DEPT TABLE TRIGGER
BY IBRAHIM KAZI 31 '|| SYSDATE);
END;
INPUT:
UPDATE DEPT SET LOC = 'LONODN' WHERE DEPTNO = 10;
OUTPUT: