Sobes.tech
Middle

Bir prosedürden (REF CURSOR) değer nasıl geri alınır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Oracle PL/SQL'de, bir prosedürden satır kümesi döndürmek için sıkça REF CURSOR kullanılır. Bu, sorgu sonucuna işaret eden bir göstergedir ve prosedür içinde açılıp çağıran koda geri döndürülebilir.

REF CURSOR tipi OUT parametreli bir prosedür örneği:

CREATE OR REPLACE PROCEDURE get_employees(p_dept_id IN NUMBER, p_refcur OUT SYS_REFCURSOR) AS
BEGIN
  OPEN p_refcur FOR
    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE department_id = p_dept_id;
END;
/

PL/SQL bloğundan çağrı:

DECLARE
  rc SYS_REFCURSOR;
  emp_id employees.employee_id%TYPE;
  fname employees.first_name%TYPE;
  lname employees.last_name%TYPE;
BEGIN
  get_employees(10, rc);
  LOOP
    FETCH rc INTO emp_id, fname, lname;
    EXIT WHEN rc%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(emp_id || ' ' || fname || ' ' || lname);
  END LOOP;
  CLOSE rc;
END;
/

Bu şekilde, prosedür gerekli sorgu ile REF CURSOR'u açar ve çağıran kod ondan verileri okur.