当前位置: 代码迷 >> Oracle管理 >> CURSOR 怎么RETURN
  详细解决方案

CURSOR 怎么RETURN

热度:522   发布时间:2016-04-24 04:14:07.0
CURSOR 如何RETURN?

您好:
以下範例中,    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,結果一樣,
那這 用 RETURN EMP_RECORD_TYPE 有何好處?

我想,用了 RETURN EMP_RECORD_TYPE,應該有特定的用途 才對!

固定游标返回该类型的字段。

举例
------解决思路----------------------
用了RETURN EMP_RECORD_TYPE返回时,fetch的时候整条记录作为一个对象来返回 
FETCH c3 INTO v_emp_record;

不用的话fetch的时候返回的是多列,cursor有几列就返回几个值
FETCH c3 INTO v_first_name, v_hire_date;
  相关解决方案