J'ai ce curseur dans une procédure dans un paquet:Oracle curseur de la procédure stockée retourne toujours zéro lignes
PROCEDURE CANCEL_INACTIVE(IN_DAYS_OLD NUMBER)
IS
CURSOR inactive IS
SELECT * FROM MY_TABLE
WHERE STATUS_CHANGED_DATE <= TRUNC(SYSDATE-IN_DAYS_OLD)
AND CANCEL_CD IS NULL;
rec inactive%ROWTYPE;
BEGIN
OPEN inactive;
LOOP
FETCH inactive INTO rec;
EXIT WHEN inactive%NOTFOUND;
-- do an update based on rec.id
END LOOP;
END;
END CANCEL_INACTIVE;
Chaque fois que je test ou exécuter la procédure, inactive a toujours aucune ligne. Cependant, lorsque je mets la même requête EXACT dans une fenêtre SQL, j'obtiens les lignes que je recherche.
Que diable?
Comment savez-vous que le curseur n'a pas de lignes? –
avez-vous testé la requête avec exactement le même IN_DAYS_OLD? –
J'ai couru la fonction à travers l'application qui la consomme et je ne voyais pas les effets de la fonction. J'ai ensuite vérifié cela en compilant en mode debug et en utilisant un script de test pour parcourir le code avec l'IDE que j'utilise. –