Это не у меня руки кривые. Это баг.
Баг за номером 7174888.
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
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;