Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

PLSQL_Cursor_Interview_Questions

Uploaded by

sachinnayaka999
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)
4 views

PLSQL_Cursor_Interview_Questions

Uploaded by

sachinnayaka999
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/ 4

PL/SQL Cursor Interview Questions & Answers

1. Implicit Cursor to Fetch Total Count of Employees in a Department


-------------------------------------------------------------------
DECLARE
v_department_id NUMBER := 10;
v_total_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_total_count
FROM employees
WHERE department_id = v_department_id;

DBMS_OUTPUT.PUT_LINE('Total Employees: ' || v_total_count);


END;
/

2. Explicit Cursor to Retrieve Employee Details


-----------------------------------------------
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, salary FROM employees;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name || ', Salary: ' || v_salary);
END LOOP;
CLOSE emp_cursor;
END;
/

3. Cursor Loop to Fetch and Print All Department Names


------------------------------------------------------
DECLARE
CURSOR dept_cursor IS SELECT department_name FROM departments;
v_dept_name departments.department_name%TYPE;
BEGIN
OPEN dept_cursor;
LOOP
FETCH dept_cursor INTO v_dept_name;
EXIT WHEN dept_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Department: ' || v_dept_name);
END LOOP;
CLOSE dept_cursor;
END;
/
4. Cursor FOR LOOP to Print Employee IDs and Salaries
-----------------------------------------------------
BEGIN
FOR rec IN (SELECT employee_id, salary FROM employees) LOOP
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || rec.employee_id || ', Salary: ' || rec.salary);
END LOOP;
END;
/

5. Cursor Fetching Records in Reverse Order Using ORDER BY


----------------------------------------------------------
DECLARE
CURSOR rev_cursor IS
SELECT employee_id, first_name FROM employees ORDER BY employee_id DESC;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
BEGIN
OPEN rev_cursor;
LOOP
FETCH rev_cursor INTO v_emp_id, v_emp_name;
EXIT WHEN rev_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END LOOP;
CLOSE rev_cursor;
END;
/

6. Using %FOUND and %NOTFOUND Attributes in an Explicit Cursor


--------------------------------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, salary FROM employees WHERE salary > 5000;
v_emp_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;

IF emp_cursor%FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_emp_id || ', Salary: ' || v_salary);
END IF;
END LOOP;
CLOSE emp_cursor;
END;
/

7. Cursor to Update Employee Salaries by 10% and Commit Changes


---------------------------------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, salary FROM employees;
v_emp_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;

UPDATE employees SET salary = salary * 1.10 WHERE employee_id = v_emp_id;


END LOOP;
CLOSE emp_cursor;
COMMIT;

DBMS_OUTPUT.PUT_LINE('Salaries updated successfully.');


END;
/

8. Explicit Cursor with Parameters for Filtering Employee Data


-------------------------------------------------------------
DECLARE
CURSOR emp_cursor (p_dept_id NUMBER) IS
SELECT employee_id, first_name, salary FROM employees WHERE department_id = p_dept_id;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor(10);
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name || ', Salary: ' || v_salary);
END LOOP;
CLOSE emp_cursor;
END;
/

9. Fetch First 5 Records Using a Cursor


---------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, first_name FROM employees WHERE ROWNUM <= 5;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END LOOP;
CLOSE emp_cursor;
END;
/

10. Handling an Exception When No Records are Found


---------------------------------------------------
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name FROM employees WHERE department_id = 9999;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
no_data_found_exception EXCEPTION;
PRAGMA EXCEPTION_INIT(no_data_found_exception, -1403);
BEGIN
OPEN emp_cursor;
FETCH emp_cursor INTO v_emp_id, v_emp_name;

IF emp_cursor%NOTFOUND THEN
RAISE no_data_found_exception;
ELSE
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END IF;

CLOSE emp_cursor;
EXCEPTION
WHEN no_data_found_exception THEN
DBMS_OUTPUT.PUT_LINE('No records found.');
END;
/

You might also like