2012-02-27 38 views
0

我有两个Oracle refcursors,一个包含Rows(CustomersList)列表,另一个包含每行的列名称(PriceGroups)。 我需要遍历每一行和列,并更新每个行/列的交集。 如何重新定位列光标,以便一次又一次地从第一列开始。 表看起来以下重复使用(重新打开)Oracle refcursor

Customer | pricegroupA | priceGroupB | priceGroupC | priceGroupEtc| 
-----------+--------------------------------------------------------- 
aaaa  | 23.5  | 23.8  | 30.9  | 41.3   | 
--------------------------------------------------------------------- 
bbbb  | 21.7  | 24.6  | 49.9  | 45.9   | 
--------------------------------------------------------------------- 
.... 
+0

dursun回答这个问题的一种方法。通过重新使用你的意思是光标共享? – 2012-02-27 03:48:52

回答

1

,如果你共享了一串代码,我可以把它改写为你,但我认为下面的例子将是对你有帮助。

declare 
    type r_cursor is REF CURSOR; 
    c_emp r_cursor; 
    en emp.ename%type; 
begin 
    /*Opening the refCursor for the first time*/ 
    open c_emp for select ename from emp; 
    loop 
     fetch c_emp into en; 
     exit when c_emp%notfound; 
     dbms_output.put_line(en); 
    end loop; 
    /*Closing it*/ 
    close c_emp; 
/*Opening the refCursor again after it is closed*/ 
    open c_emp for select ename from emp; 
    loop 
     fetch c_emp into en; 
     exit when c_emp%notfound; 
     dbms_output.put_line(en); 
    end loop; 
    close c_emp; 
    /*Closing it again*/ 
end;