The document contains various PL/SQL code snippets demonstrating the use of cursors, exception handling, conditional statements, loops, procedures, and functions. It includes examples of fetching student records based on rank, inserting student data, and handling exceptions for low marks. Additionally, it showcases the creation of stored functions and recursive functions for calculations.
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 ratings0% found this document useful (0 votes)
1 views2 pages
DBMS
The document contains various PL/SQL code snippets demonstrating the use of cursors, exception handling, conditional statements, loops, procedures, and functions. It includes examples of fetching student records based on rank, inserting student data, and handling exceptions for low marks. Additionally, it showcases the creation of stored functions and recursive functions for calculations.
%TYPE; CURSOR c_firstrank IS SELECT name, roll_no, rank FROM dsa WHERE rank > 5; e_nodatafound EXCEPTION; v_count NUMBER := 0; BEGIN OPEN c_firstrank; LOOP FETCH c_firstrank INTO v_name, v_id, v_rank; EXIT WHEN c_firstrank%NOTFOUND; v_count := v_count + 1; -- Track rows fetched DBMS_OUTPUT.PUT_LINE('Student ID: ' || v_id || ' | Name: ' || v_name || ' | Rank: ' || v_rank); END LOOP; CLOSE c_firstrank; IF v_count = 0 THEN RAISE e_nodatafound; END IF; EXCEPTION WHEN e_nodatafound THEN DBMS_OUTPUT.PUT_LINE('No students found with rank > 5'); WHEN … [3:19 pm, 29/4/2025] Naveen: 5.EX B [3:19 pm, 29/4/2025] Naveen: DECLARE v_student_id NUMBER := 101; v_student_name VARCHAR2(50) := 'John Doe'; BEGIN -- Insert a student record INSERT INTO student (student_id, student_name) VALUES (v_student_id, v_student_name); DBMS_OUTPUT.PUT_LINE('Record Inserted.'); -- Savepoint after the first insert SAVEPOINT sp1; DBMS_OUTPUT.PUT_LINE('Savepoint sp1 created.'); -- Insert another record INSERT INTO student (student_id, student_name) VALUES (102, 'Jane Smith'); INSERT INTO student (student_id, student_name) VALUES (103, 'Stve Smith'); INSERT INTO student (student_id, student_name) VALUES (104, 'Micheal'); DBMS_OUTPUT.PUT_LINE('Multiple records are inserted.'); -- Savepoint after the second insert SAVEPOINT sp2; D… [3:27 pm, 29/4/2025] Naveen: 6.EX NESTED IF [3:27 pm, 29/4/2025] Naveen: DECLARE v_rank NUMBER := 4; -- You can change this to test BEGIN IF v_rank = 1 THEN DBMS_OUTPUT.PUT_LINE('Topper'); ELSE IF v_rank BETWEEN 2 AND 5 THEN DBMS_OUTPUT.PUT_LINE('Good'); ELSE IF v_rank BETWEEN 6 AND 10 THEN DBMS_OUTPUT.PUT_LINE('Average'); ELSE DBMS_OUTPUT.PUT_LINE('Needs Improvement'); END IF; END IF; END IF; END; [3:27 pm, 29/4/2025] Naveen: CASE [3:27 pm, 29/4/2025] Naveen: DECLARE v_rank NUMBER := 4; -- Change this to test different cases v_result VARCHAR2(30); BEGIN CASE WHEN v_rank = 1 THEN v_result := 'Topper'; WHEN v_rank BETWEEN 2 AND 5 THEN v_result := 'Good'; WHEN v_rank BETWEEN 6 AND 10 THEN v_result := 'Average'; ELSE v_result := 'Needs Improvement'; END CASE; DBMS_OUTPUT.PUT_LINE('Student Classification: ' || v_result); END; [3:30 pm, 29/4/2025] Naveen: NULLIF [3:30 pm, 29/4/2025] Naveen: SELECT NULLIF(100, 100) AS result1, -- returns NULL NULLIF(100, 200) AS result2 -- returns 100 FROM dual; [3:32 pm, 29/4/2025] Naveen: COALESCE [3:32 pm, 29/4/2025] Naveen: SELECT COALESCE(NULL, NULL, 'Hello', 'World') AS result FROM dual; -- Output: Hello [3:35 pm, 29/4/2025] Naveen: 7.EX [3:35 pm, 29/4/2025] Naveen: WHILE [3:35 pm, 29/4/2025] Naveen: DECLARE i NUMBER := 1; BEGIN WHILE i <= 5 LOOP DBMS_OUTPUT.PUT_LINE('Number: ' || i); i := i + 1; END LOOP; END; [3:35 pm, 29/4/2025] Naveen: FOR [3:36 pm, 29/4/2025] Naveen: BEGIN FOR i IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE('Number: ' || i); END LOOP; END; [3:36 pm, 29/4/2025] Naveen: NESTED LOOP [3:36 pm, 29/4/2025] Naveen: BEGIN FOR i IN 1..3 LOOP -- Outer loop (rows) FOR j IN 1..3 LOOP -- Inner loop (columns) DBMS_OUTPUT.PUT_LINE('Row: ' || i || ', Column: ' || j); END LOOP; END LOOP; END; [3:38 pm, 29/4/2025] Naveen: Built-in Exception Handling This PL/SQL block handles NO_DATA_FOUND exception: DECLARE v_Marks Students.Marks%TYPE; BEGIN SELECT Marks INTO v_Marks FROM Students WHERE StudentID = 15; -- Invalid ID EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Error: No student found with given ID.'); END; [3:38 pm, 29/4/2025] Naveen: User-defined Exception This PL/SQL block raises a user-defined exception for low marks: DECLARE v_Marks Students.Marks%TYPE; e_LowMarks EXCEPTION; BEGIN SELECT Marks INTO v_Marks FROM Students WHERE StudentID = 7; IF v_Marks < 50 THEN RAISE e_LowMarks; END IF; EXCEPTION WHEN e_LowMarks THEN DBMS_OUTPUT.PUT_LINE('Error: Student has low marks.'); END; [3:39 pm, 29/4/2025] Naveen: RAISE_APPLICATION_ERROR This PL/SQL block raises a custom error: DECLARE v_Marks Students.Marks%TYPE; BEGIN SELECT Marks INTO v_Marks FROM Students WHERE StudentID = 5; IF v_Marks < 40 THEN RAISE_APPLICATION_ERROR(-20001, 'Error: Student has failed.'); END IF; END; [3:47 pm, 29/4/2025] Naveen: EXP .8 [3:47 pm, 29/4/2025] Naveen: PROCEDURE IN [3:47 pm, 29/4/2025] Naveen: CREATE OR REPLACE PROCEDURE greet_employee ( p_employee_name IN VARCHAR2 ) IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello, ' || p_employee_name || '!'); END greet_employee; / -- Calling the procedure BEGIN greet_employee('John Doe'); END; / [3:50 pm, 29/4/2025] Naveen: OUT [3:51 pm, 29/4/2025] Naveen: CREATE OR REPLACE PROCEDURE get_message ( p_message OUT VARCHAR2 ) IS BEGIN p_message := 'Hello, PL/SQL!'; -- Assign a value to the OUT parameter END get_message; / [3:51 pm, 29/4/2025] Naveen: DECLARE v_result VARCHAR2(100); -- Variable to hold the output BEGIN get_message(v_result); -- Call the procedure DBMS_OUTPUT.PUT_LINE(v_result); -- Print the result END; / [3:54 pm, 29/4/2025] Naveen: EX.9 [3:54 pm, 29/4/2025] Naveen: STORED FUNCTIONS [3:54 pm, 29/4/2025] Naveen: CREATE OR REPLACE FUNCTION get_current_date RETURN DATE IS v_date DATE; BEGIN v_date := SYSDATE; RETURN v_date; END get_current_date; / [3:54 pm, 29/4/2025] Naveen: DECLARE v_today DATE; BEGIN v_today := get_current_date(); -- Call the function DBMS_OUTPUT.PUT_LINE('Today is: ' || v_today); END; / [3:58 pm, 29/4/2025] Naveen: COMPLEX FUNCTIONS [3:58 pm, 29/4/2025] Naveen: Recursive Function (Factorial Calculation) sql CREATE OR REPLACE FUNCTION factorial ( n NUMBER ) RETURN NUMBER IS BEGIN IF n <= 1 THEN RETURN 1; ELSE RETURN n * factorial(n - 1); -- Recursive call END IF; EXCEPTION WHEN VALUE_ERROR THEN RETURN NULL; -- Handle overflow END factorial; / -- Example Usage SELECT factorial(5) FROM dual; -- Returns 120 [4:00 pm, 29/4/2025] Naveen: 10.EXP CURSOR = 5.EXP