Je voudrais savoir comment vérifier si un curseur ref renvoie des données.comment vérifier si un curseur ref renvoie des données d'une procédure pl/sql
Disons que j'ai le code suivant dans un package PL/SQL:
type refcursor is ref cursor;
procedure Foo(cursorresult out refcursor) is
begin
open cursorresult for
select *
from table t
inner join t2 on t.id = t2.id
where t.column1 is null;
end;
procedure DoSomeghingIfFooHasResults is
curFoo refcursor;
begin
Foo(curSansOwner);
if curFoo%found then
-- Do something
end if;
end function;
Ce code est utilisé dans un processus plus complexe et la requête en Foo utilise plusieurs tables.
J'ai besoin des données retournées par Foo dans une application asp.net, mais j'ai aussi besoin de faire quelque chose quand Foo trouve des données.
Je souhaite réutiliser la requête à quelques endroits, mais je ne pense pas que ce soit un bon candidat pour une vue.
Quel serait le meilleur moyen de savoir si Foo trouve quelque chose?
Merci.
Le problème est que je ne peux pas utiliser% ROWTYPE parce que mes données proviennent de nombreuses tables dans mon vrai proc. Échantillon de code édité pour refléter cela – Martin
Vous ne pouvez pas le faire génériquement Je suis d'accord - en fait, vous ne pouvez probablement pas faire ce que vous voulez. Le code "faire quelque chose" doit connaître la structure des données qu'il va utiliser, et il devra donc prendre soin de la situation où le curseur ne retourne aucune ligne. –
Vous pouvez déclarer un type d'enregistrement, correspondant aux types de champ de sortie attendus de la requête sous-jacente. (Nous espérons que vous avez simplifié, mais l'utilisation de '*' n'est pas idéale, entre autres choses, vous avez deux colonnes appelées 'ID'). –