Когда я пытаюсь пройти курсор, полученный из процедуры, я получаю ошибку в курсоре - PullRequest
0 голосов
/ 17 октября 2019

Добрый день, приятели,

У меня есть процедура, выполненная в Oracle, которая имеет параметр типа курсора и выводится.

У меня объявлена ​​переменная, и процедура возвращает данныедля меня в других выходных параметрах

   procedure SP_SOLANTECEDLICE   (
     P_FECHA  NUMBER,
     P_ISAPRE VARCHAR2   ) is

     fecha      number(10);
     c_cursor   SYS_REFCURSOR;
     ERR_CODIGO NUMBER(10);
     ERR_GLOSA  VARCHAR2(1000);

     --  r c_cursor%ROWTYPE;
      begin

     PKG_SRENTA.SP_getCARTAS(P_FECHA,
                                          P_ISAPRE,
                                          2,
                                          ERR_CODIGO,
                                          ERR_GLOSA,
                                          c_cursor);
     dbms_output.put_line(ERR_CODIGO);
     if (ERR_CODIGO = 0)
     then


       for c in c_cursor loop
         dbms_output.put_line('ciclo');
       end loop;
     end if;
      end SP_SOLANTECEDLICE;

Когда я выполняю код, я получаю следующую ошибку: C_CURSOR НЕ ПРОЦЕДУРА ИЛИ НЕ ОПРЕДЕЛЕН

КАК Я МОГУ РЕШИТЬ ЭТУ ПРОБЛЕМУ? ПОЖАЛУЙСТА, ПОМОГИТЕ

1 Ответ

1 голос
/ 18 октября 2019

Поскольку sys_refcursor нельзя использовать как for c in c_cursor loop (c_cursor как sys_refcursor), попробуйте использовать с предложением fetch ..into, например:

create or replace procedure SP_SOLANTECEDLICE(P_FECHA  NUMBER,
                                              P_ISAPRE VARCHAR2) is

  fecha      number(10);
  c_cursor   SYS_REFCURSOR;
  ERR_CODIGO NUMBER(10);
  ERR_GLOSA  VARCHAR2(1000);

begin

  PKG_SRENTA.SP_getCARTAS(P_FECHA,P_ISAPRE,2,ERR_CODIGO,ERR_GLOSA,c_cursor);
  dbms_output.put_line(ERR_CODIGO);
  if (ERR_CODIGO = 0) then
    loop
      fetch c_cursor
        into fecha;
      exit when c_cursor%notfound;
      dbms_output.put_line(fecha);
    end loop;
  end if;

end SP_SOLANTECEDLICE;

, где sys_refcursorбуферное пространство для выделения значения для столбца numeric, string или переменной rowtype, и по этой причине в качестве примера использовался возврат в fecha.

...