Sobes.tech
Middle

Чӣ гуна аз процедура бо истифода аз курсор (REF CURSOR) арзиш баргардонем?

sobes.tech AI

Ҷавоб аз AI

Дар Oracle PL/SQL, барои баргардондани маҷмӯи сатрҳо аз протсесс, аксаран REF CURSOR истифода мешавад. Ин ишора ба натиҷаи пурсиш аст, ки дар дохили протсесс кушода шуда, ба коди даъваткунанда баргардонида мешавад.

Маслиҳат барои протсесс бо параметри OUT аз навъи REF CURSOR:

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:

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;
/

Инчунин, протсесс бо пурсиши зарурӣ REF CURSOR-ро мекушояд, ва коди даъваткунанда маълумотро аз он мехонад.