Si GetQuestions
est une fonction renvoyant un refcursor, qui semble être ce que vous avez dans la version SQL Server, alors vous pourrez peut-être faire quelque chose comme ceci :
select * from table(MyPackage.GetQuestions('OMG Ponies'));
Ou si vous en avez besoin dans un bloc PL/SQL, vous pouvez utiliser la même sélection dans un curseur.
Vous pouvez également faire en sorte que la fonction produise le dbms_output
à la place afin qu'elles soient toujours disponibles pour le débogage, bien que cela ajoute un peu de surcharge.
Modifier
Hmmm, pas sûr qu'il soit possible de cast()
le refcursor renvoyé à un type utilisable, à moins que vous ne souhaitiez déclarer votre propre type (et une table de ce type) en dehors du package. Vous pouvez le faire cependant, juste pour vider les résultats :
create package mypackage as
function getquestions(user in varchar2) return sys_refcursor;
end mypackage;
/
create package body mypackage as
function getquestions(user in varchar2) return sys_refcursor as
r sys_refcursor;
begin
open r for
/* Whatever your real query is */
select 'Row 1' col1, 'Value 1' col2 from dual
union
select 'Row 2', 'Value 2' from dual
union
select 'Row 3', 'Value 3' from dual;
return r;
end;
end mypackage;
/
var r refcursor;
exec :r := mypackage.getquestions('OMG Ponies');
print r;
Et vous pouvez utiliser le résultat de l'appel dans une autre procédure ou fonction; c'est juste l'accès en dehors de PL/SQL qui semble être un peu délicat.
Modifié pour ajouter : Avec cette approche, s'il s'agit d'une procédure, vous pouvez faire essentiellement la même chose :
var r refcursor;
exec mypackage.getquestions(:r, 'OMG Ponies');
print r;