您好:
以下範例中, Cirsor c 有 RETURN EMP_RECORD_TYPE
那請問,該整段程式中, 哪邊要來 接收這一個RETURN?
謝謝!
DECLARE
TYPE emp_record_type IS RECORD(
f_name hr.employees.first_name%TYPE,
h_date hr.employees.hire_date%TYPE);
v_emp_record EMP_RECORD_TYPE;
CURSOR c3(dept_id NUMBER, j_id VARCHAR2) --声明游标,有参数有返回值
RETURN EMP_RECORD_TYPE
IS
SELECT first_name, hire_date FROM hr.employees
WHERE department_id = dept_id AND job_id = j_id;
BEGIN
OPEN c3(j_id => 'AD_VP', dept_id => 90); --打开游标,传递参数值
LOOP
FETCH c3 INTO v_emp_record; --提取游标
IF c3%FOUND THEN
DBMS_OUTPUT.PUT_LINE(v_emp_record.f_name||'的雇佣日期是'
||v_emp_record.h_date);
ELSE
DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');
EXIT;
END IF;
END LOOP;
CLOSE c3; --关闭游标
END;
------解决思路----------------------
固定游标返回该类型的字段。
举例
------解决思路----------------------
用了RETURN EMP_RECORD_TYPE返回时,fetch的时候整条记录作为一个对象来返回
FETCH c3 INTO v_emp_record;
不用的话fetch的时候返回的是多列,cursor有几列就返回几个值
FETCH c3 INTO v_first_name, v_hire_date;