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՝ անհրաժեշտ հարցումով, իսկ կանչող կոդը կարդում է տվյալները նրանից։