Повторное использование (повторное открытие) Oracle refcursor - PullRequest
1 голос
/ 27 февраля 2012

У меня есть два прекурсора Oracle, один из которых содержит список строк (CustomersList), а другой - имена столбцов (PriceGroups) каждой строки.Мне нужно перебрать каждую строку и столбец и обновить пересечение каждой строки / столбца.Как я могу изменить положение курсора столбцов, чтобы начать с первого столбца снова и снова.Таблица выглядит следующим образом

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

1 Ответ

2 голосов
/ 27 февраля 2012

если бы вы поделились кучей кода, я мог бы переписать его для вас, но я думаю, что следующий пример будет вам полезен.

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;
...