Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1666 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] procédure stockée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ORACLE] procédure stockée

n°1620827
sharck1987
Posté le 09-10-2007 à 09:52:06  profilanswer
 

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
mood
Publicité
Posté le 09-10-2007 à 09:52:06  profilanswer
 

n°1620879
fred777888​999
Posté le 09-10-2007 à 10:34:45  profilanswer
 

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

n°1620886
sharck1987
Posté le 09-10-2007 à 10:40:19  profilanswer
 

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

n°1620896
jpcheck
Pioupiou
Posté le 09-10-2007 à 10:51:58  profilanswer
 

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

n°1621057
casimimir
Posté le 09-10-2007 à 14:41:57  profilanswer
 

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

n°1623199
Profil sup​primé
Posté le 12-10-2007 à 20:34:01  answer
 

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;  
/


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ORACLE] procédure stockée

 

Sujets relatifs
variable procédure et module[PL/SQL] Procédure Stockée
[Oracle PL/SQL] Error PLS-00103 dans une procédure stockéeProcedure Stockée en Java sous Oracle 9.2
Procedure stockée Oracle erreurErreur sur procedure stockée Oracle
[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockéePb appel procédure stockée oracle
ramener des paramètres OUT d'une procédure stockée OracleSaisir une valeur dans une procédure stockée oracle
Plus de sujets relatifs à : [ORACLE] procédure stockée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR