[ORACLE] procédure stockée

procédure stockée [ORACLE] - SQL/NoSQL - Programmation

Marsh Posté le 09-10-2007 à 09:52:06    

Bonjour,
J'ai besoin d'une procédure stockée afin d'alimenter une table (TOP100) qui contient  
des infos sur les individus les plus consultés de la BDD.
 
J'ai un pb au moment de l'execution de ma procédure :

 
--- mon erreur ---
 
ERREUR à la ligne 1 :
ORA-01403: Aucune donnée trouvée
ORA-06512: à "E17809.NBSELECTION", ligne 10
ORA-06512: à ligne 1
 
--- ma table top100 ---
 
CREATE TABLE TOP100
(nbConsultation number,
NumInd number references ens2004.Individu(NumIndividu));
 
--- ma procédure ---
 
CREATE OR REPLACE PROCEDURE NbSelection (NumIndividu number)
IS
 
nI ens2004.Individu.NumIndividu%type;
nC TOP100.nbConsultation%type;
 
BEGIN  
nI :=0;
 
 SELECT nbConsultation, NumInd INTO nC, nI FROM TOP100 WHERE NumInd = NumIndividu;
         IF nI = 0 THEN
   INSERT INTO TOP100 VALUES(1,NumIndividu);
   ELSE
   UPDATE TOP100 SET nbConsultation = nC+1 WHERE NumInd = NumIndividu;
   END IF;
 
END;
/
 
Merci d'avance  :jap:


Message édité par sharck1987 le 09-10-2007 à 10:01:45
Reply

Marsh Posté le 09-10-2007 à 09:52:06   

Reply

Marsh Posté le 09-10-2007 à 10:34:45    

Hummm, a vue de nez, c parceque tu n'as pas de données pour le code individu passé en paramètres. Essaye de modifier ta requete comme ca :

Code :
  1. SELECT NVL(MAX(nbConsultation),0), NVL(MAX(NumInd),0) INTO nC, nI FROM TOP100 WHERE NumInd = NumIndividu;


pour ramener des 0 au lieu de nulls si tu ne trouve pas de datas.
 
++
 
Fred

Reply

Marsh Posté le 09-10-2007 à 10:40:19    

Merci beaucoup , je connaissait pas cette syntaxe peut tu m'expliquer l'utilisation de NVL rapidement ;)  
 
en tout cas ça marche bien ! Merci beaucoup !!

Reply

Marsh Posté le 09-10-2007 à 10:51:58    

NVL permet de remplacer une valeur NULL par une valeur passée en paramètre, ici 0

Reply

Marsh Posté le 09-10-2007 à 14:41:57    

et je te conseille de faire la découverte du block EXCEPTION, ca te permettra de mieux comprendre les mécanismes de renvoi d'exception de ce genre

Reply

Marsh Posté le 12-10-2007 à 20:34:01    

CREATE OR REPLACE PROCEDURE NbSelection (NumIndividu number)  
IS  
 
nI ens2004.Individu.NumIndividu%type;  
nC TOP100.nbConsultation%type;  
 
BEGIN  
nI :=0;  
 BEGIN
 SELECT nbConsultation, NumInd INTO nC, nI FROM TOP100 WHERE NumInd = NumIndividu;  
         IF nI = 0 THEN  
   INSERT INTO TOP100 VALUES(1,NumIndividu);  
   ELSE  
   UPDATE TOP100 SET nbConsultation = nC+1 WHERE NumInd = NumIndividu;  
   END IF;  
 EXCEPTION WHEN OTHERS THEN NULL;
END;
END;  
/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed