解决方案 »

  1.   

    FOR 循环更简单,不用定义和打开游标,直接使用
    For example:DECLARE
    BEGIN
      FOR V_EMP_RECORD IN (SELECT * FROM tgp_funds) LOOP
        DBMS_OUTPUT.PUT_LINE(V_EMP_RECORD.FND_ID);
      END LOOP;
    END;
      

  2.   

    如果你想在FOR循环中使用游标变量,需要在DECLARE中定义,
      

  3.   

    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
    这里不是定义了吗?
      

  4.   

    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
    这里不是定义了吗?
    我的意思是在定义的时候进行初始化,比如:
    CURSOR CR IS SELELCT * FROM TEST.还有一点是用FOR循环不需要再打开游标,
      

  5.   

    ref cursor是动态游标的关系、
    假如声明变成declare
       CURSOR v_emp_cur is  SELECT *FROM t_myemp;
      begin
      ...
    ...还有1楼的for的另一种方式,BEGIN
      FOR V_EMP_RECORD IN (SELECT * FROM tgp_funds) LOOP
        DBMS_OUTPUT.PUT_LINE(V_EMP_RECORD.FND_ID);
      END LOOP;
    END;这种方式是建立隐式游标!
      

  6.   

    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
    这里不是定义了吗?
    我的意思是在定义的时候进行初始化,比如:
    CURSOR CR IS SELELCT * FROM TEST.还有一点是用FOR循环不需要再打开游标,
    能给出详细的格式吗?
    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
       CURSOR v_emp_cur IS SELECT *FROM t_myemp;这样的方式会报:
    PLS-00305: 'V_EMP_CUR' 的前一次使用 (在第 3 行) 与此次使用发生冲突
      

  7.   

    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
    这里不是定义了吗?
    我的意思是在定义的时候进行初始化,比如:
    CURSOR CR IS SELELCT * FROM TEST.还有一点是用FOR循环不需要再打开游标,
    能给出详细的格式吗?
    DECLARE
       TYPE emp_cur IS REF CURSOR;
       v_emp_cur emp_cur;
       v_emp_record t_myemp%ROWTYPE;
       CURSOR v_emp_cur IS SELECT *FROM t_myemp;这样的方式会报:
    PLS-00305: 'V_EMP_CUR' 的前一次使用 (在第 3 行) 与此次使用发生冲突
       CURSOR v_emp_cur IS SELECT *FROM t_myemp;这种方式其实就是定义一个V_EMP_CUR的游标。之所以报错其实是因为 v_emp_cur emp_cur又定义了一个游标,所以会报错,因为你定义了两个同名的游标
      

  8.   

    for c in (select ..) loop
       -- 用c.字段/别名 直接取得当前行的某字段/别名的值
    end loop;c 不需要声明 游标不需要声明 不需要打开 不需要关闭这叫做隐式调用。