Skip to main content

Cursor with Parameters ⚙️

Mentor's Note: Imagine writing a separate query for every single department in your company. That would be hundreds of cursors! Instead, we write one cursor and pass the "Department ID" into it as a Parameter. 💡


🌟 The Scenario: The Custom Filter 🔍

Imagine a high-pressure kitchen.

  • You have a cursor that "Gets Orders".
  • Instead of a generic list, the chef can say: "Get orders for Table 5" or "Get orders for Table 10".
  • The query is the same, but the Target changes.

💻 1. The Basic Syntax

You define the parameter in the CURSOR declaration and pass the value when you OPEN it.

DECLARE
-- 1. Define Parameter (name type)
CURSOR c_emp (p_dept_id NUMBER) IS
SELECT first_name FROM employees
WHERE department_id = p_dept_id;

v_name employees.first_name%TYPE;
BEGIN
-- 2. Pass the value 10
OPEN c_emp(10);
LOOP
FETCH c_emp INTO v_name;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Admin Staff: ' || v_name);
END LOOP;
CLOSE c_emp;

-- 3. Pass a different value 20
OPEN c_emp(20);
-- ... process Marketing staff ...
CLOSE c_emp;
END;

💻 2. Using with Cursor FOR LOOP

This is even cleaner!

DECLARE
CURSOR c_dept_emp (p_id NUMBER) IS
SELECT first_name FROM employees WHERE department_id = p_id;
BEGIN
FOR r IN c_dept_emp(30) LOOP -- 🚀 Just pass parameter here
DBMS_OUTPUT.PUT_LINE('IT Staff: ' || r.first_name);
END LOOP;
END;

🛡️ 3. Benefits (Architect's Note)

  1. Reusability: One cursor handles many scenarios.
  2. Security: Parameters help prevent SQL Injection because the values are treated as data, not part of the query text.
  3. Performance: Oracle can reuse the same Execution Plan for the cursor, even if the parameter value changes. This is much faster for the server! ⚡

📈 Learning Path

📍 Visit Us

🏫 VD Computer Tuition Surat

VD Computer Tuition
📍 Address
2/66 Faram Street, Rustompura
Surat395002, Gujarat, India
📞 Phone / WhatsApp
+91 84604 41384
🌐 Website

Computer Classes & Tuition — Areas We Serve in Surat

AdajanAlthanAmroliAthwaAthwalinesBhagalBhatarBhestanCanal RoadChowkCitylightDumasGaurav PathGhod Dod RoadHaziraJahangirpuraKamrejKapodraKatargamLimbayatMagdallaMajura GateMota VarachhaNanpuraNew CitylightOlpadPalPandesaraParle PointPiplodPunaRanderRing RoadRustampuraSachinSalabatpuraSarthanaSosyo CircleUdhnaVarachhaVed RoadVesuVIP Road
📞 Call Sir💬 WhatsApp Sir