v_emp_record.f_name就是在用游标中返回值啊

解决方案 »

  1.   

    FETCH c3 INTO v_emp_record;
    就是将游标中的记录赋予v_emp_record --也就是提取游标的返回值。游标返回可能包含多条记录,需要用loop的方式将多条记录一条一条的返回给v_emp_record
      

  2.   

    您好:
    謝謝!
    但 有用   與 沒有用  RETURN EMP_RECORD_TYPE,結果一樣,
    那這 用 RETURN EMP_RECORD_TYPE 有何好處?我想,用了 RETURN EMP_RECORD_TYPE,應該有特定的用途 才對!
      

  3.   

    用了RETURN EMP_RECORD_TYPE返回时,fetch的时候整条记录作为一个对象来返回 
    FETCH c3 INTO v_emp_record;
    不用的话fetch的时候返回的是多列,cursor有几列就返回几个值
    FETCH c3 INTO v_first_name, v_hire_date;
      

  4.   

    您好:
    謝謝!不過,我試過 似乎 有沒有 RETURN 都可以RUN???DECLARE
       TYPE XX IS RECORD(
            f_name   hr.employees.first_name%TYPE,
            h_date   hr.employees.hire_date%TYPE);
       v_XX XX;       
       v_f_name hr.employees.first_name%TYPE;
       v_h_date hr.employees.hire_date%TYPE;
       CURSOR c2(p_deptid NUMBER, p_jobid VARCHAR2) --声明游标,有参数,没有返回值
       RETURN XX
       IS
          SELECT first_name, hire_date FROM hr.employees
          WHERE department_id = p_deptid AND job_id = p_jobid;
    BEGIN
       OPEN c2(90, 'AD_VP');  --打开游标,传递参数值
       LOOP
          FETCH c2 INTO v_XX.f_name,v_XX.h_date;    --提取游标
          IF c2%FOUND THEN
             --DBMS_OUTPUT.PUT_LINE(v_f_name||'的雇佣日期是'||v_h_date);
             DBMS_OUTPUT.PUT_LINE(v_XX.f_name||'的雇佣日期是'||v_XX.h_date);
          ELSE
             DBMS_OUTPUT.PUT_LINE('已经处理完结果集了');
             EXIT;
          END IF;
       END LOOP;
       CLOSE c2;   --关闭游标
    END;
      

  5.   

    是啊,有没有renturn都可以,都对,只是fetch的写法不一样
      

  6.   

    好的,謝謝您!
    只是不知若都可以 為何還要 多一個RETURN