我想把c_Pickup这个游标的一行赋给r,怎么赋呢?
代码如下    TYPE QuickCur_Type IS REF CURSOR;
    c_Pickup QuickCur_Type;
    r c_Pickup%rowtype;    if vBinUsage = PWM_DEF.BinUsagePickName then
      open c_Pickup for
        select m.*
        from TPICKUP m
        where m.f1 = 'a';
    else
      open c_Pickup for
        select m.*
        from TPICKUP m
        where m.f1 = 'b';
    end if;        fetch c_Pickup into r;
    while c_Pickup%Found loop     
 
    end loop;
    close c_Pickup;

解决方案 »

  1.   

    这个游标里的语句是这样的:
            select d.f2, d.*
            from TPICKUP m, tpickupdtl d
            where m.num = d.num and m.f1 = 'a';
      

  2.   

    SET SERVERIUTPUT ON DECLARE R_emp EMP%ROWTYPE; CURSOR c_emp IS SELECT * FROM emp; BEGIN   OPEN c_emp;    LOOP      FETCH c_emp INTO r_emp;      EXIT WHEN c_emp%NOTFOUND;      DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);    END LOOP;   CLOSE c_emp; END;
      

  3.   

    to hongqi162(失踪的月亮) :
    R_emp EMP%ROWTYPE;这样声明是声明了一个表结构的一行,
    但是我现在这个游标里取出来的数据是两个表甚至是多个表里的数据列呀……
      

  4.   

    PL/SQL中是前期绑定的,所以如果你定义的是ref游标,    
        TYPE QuickCur_Type IS REF CURSOR;
        c_Pickup QuickCur_Type;
        r c_Pickup%rowtype;
    这部分肯定连编译都通不过的,因为c_Pickup 是不确定的。
    不过看到你上面的语句,都是从一个表中取出来的,只是变量不一样,那就何必定义ref游标呢
    只需要给游标加上一个参数就可以了,如下
        
        cursor QuickCur_Type(v_f1 var_type(自己看看是什么类型)) is
               select m.* from TPICKUP m where m.f1= v_f1;
        c_Pickup QuickCur_Type;
        r c_Pickup%rowtype;    if vBinUsage = PWM_DEF.BinUsagePickName then
          open c_Pickup('a');
        else
          open c_Pickup('b');
        end if;    
        fetch c_Pickup into r;
        while c_Pickup%Found loop     
        end loop;
        close c_Pickup;
    呵呵,应该可以了,你试一试