[PL/SQL] Problème gestion d'éxception
Bonjour à tous,
J' ai un problème pour gérer une éxception dans une fonction en PL/SQL.
Ma fonction parcours une table, doit me selectionner la plus grande date contenue dans cette table pour un client donné et la soustraire à la date du jour. Le code de cette fonction marche tres bien quand je l'appelle en JAVA. Le problème, c'est quand le client n'est pas encore dans la table, c'est-à-dire qu'il n'y a pas de date lui corréspondant, un éxception est levée sous Eclipse, qui m'indique qu'aucune valeur n'est retournée, mais le programme continu à tourner sans problème. Je voudrais qu'il n'y ait plus d'affichage.
C'est pourquoi j'ai décidé de gérer l'éxception en PL/SQL.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
CREATE OR REPLACE FUNCTION EmpecheVote (loginUtil IN CLIENT.login%type) RETURN INTEGER IS
BEGIN
DECLARE
presant INTEGER;
i INTEGER;
k INTEGER;
temp DATE;
CURSOR monC IS SELECT DateNote FROM TempIndFilm WHERE loginNoteur = loginUtil;
TYPE TableDate IS Table Of DATE INDEX BY BINARY_INTEGER;
tabdate TableDate;
BEGIN
presant:=-1;
k:=0;
i:=0;
FOR elt in monC
LOOP
tabdate(i):=TO_DATE(elt.DateNote);
i:=i+1;
END LOOP;
temp:=tabDate(0);
FOR i IN 1..tabdate.COUNT() -1
LOOP
IF tabdate(i) > temp THEN
temp:=tabdate(i);
END IF;
END LOOP;
IF (SYSDATE - temp>1) THEN
presant:=1;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
presant:=0;
return presant;
END;
END EmpecheVote;
/ |
Le probleme avec cette exception, c'est que maintenant mon code ne marche plus, la valeur retournée est incorrecte, il me retourne tout le temps 0.
J'aimerais savoir si l'erreur vient de la synthaxe de mon éxception ou si elle est male placée...