mirall: (job)
mirall ([personal profile] mirall) wrote2009-03-31 11:24 am
Entry tags:

Это не у меня руки кривые. Это баг.

    Баг за номером 7174888.
declare
  sValue varchar2(50);
  cOut sys_refcursor;
  procedure p1 (o_cur out sys_refcursor)
  begin
    open o_cur for
      select 'value' value from dual;
  end p1;
begin
  p1( o_cur => cOut );
  fetch cOut r into sValue;
  close cOut
end;
    Падает на этапе fetch с ошибкой ORA-06504: PL/SQL: Return types of Result Set variables or query do not match

    Workaround.
    Открыть предварительно курсор.
declare
  sValue varchar2(50);
  cOut sys_refcursor;
  procedure p1 (o_cur out sys_refcursor)
  begin
    open o_cur for
      select 'value' value from dual;
  end p1;
begin
  open cOut for 'select 1 from dual';
  p1( o_cur => cOut );
  fetch cOut r into sValue;
  close cOut
end;

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting