Erreur : ISNULL is not Declared sur Orale 8i - SQL/NoSQL - Programmation
Marsh Posté le 13-04-2007 à 13:45:11
je reprends le bout de code ici parceque ça se voir pas très bien dans mon premier message  
 
 
 
   1. 
      CREATE OR REPLACE TRIGGER trig_langue 
   2. 
      AFTER INSERT ON COMMUN.ES_LANGUE 
   3. 
      FOR EACH ROW 
   4. 
      DECLARE 
   5. 
        
   6. 
      SPY INTEGER; 
   7. 
        
   8. 
      BEGIN 
   9. 
        
  10. 
        
  11. 
        if inserting then 
  12. 
        select ISNULL(DML,0) into SPY from DELTACOMMUN.ES_LANGUE where code = :new.code; 
  13. 
        if SPY = 3 then 
  14. 
         insert into DELTACOMMUN.ES_LANGUE values (:new.code,:new.libelle,:new.symbole,2); 
  15. 
        else   
  16. 
        insert into DELTACOMMUN.ES_LANGUE values (:new.code,:new.libelle,:new.symbole,1); 
  17. 
        end if; 
  18. 
        end if;
Marsh Posté le 13-04-2007 à 13:56:28
Autrement dit, comment peut on empêcher le SELECT de retourner rien ou null? je voudraus à la place de null avoir un nombre, 0 par exemple. 
je pense que le isnull permet de faire cela sauf qu'il ne marche pas là. 
Faites moi part d'un réponse please. 
Thank you!!
Marsh Posté le 13-04-2007 à 14:05:44
Merci. 
Mnt ca marche pour le nvl(DML,0) mais j'ai l'erreur suivante : 
 
Aucune donnée trouvée 
ORA-06512: à "SYS.TRIG_LANGUE", ligne 9 
ORA-04088: erreur lors d'exécution du déclencheur 'SYS.TRIG_LANGUE' 
 
qu'est ce qui se passe lorsqu'on fait un select sur une table vide, est ce que la requête SELECT retourne null ou retourne un message d'erreur.
Marsh Posté le 13-04-2007 à 14:12:37
est ce qu'on peut écrire: 
 
SPY := nvl(select DML from ES_LANGUE,0)??
Marsh Posté le 13-04-2007 à 14:16:39
S'il n'y a pas de ligne, alors le SELECT ... INTO renvoie l'erreur que tu vois. 
 
Il faut faire qqch comme : 
 
begin 
  select DML 
  into SPY 
  from DELTACOMMUN.ES_LANGUE 
  where code = :new.code; 
exception 
  when NO_DATA_FOUND then 
    SPY := 0; 
end;
Marsh Posté le 13-04-2007 à 13:43:30
Bonjour Tous,
j'ai contruit le trigger suivant sur une base de données Oracle 8i ou j'ai deux schéma COMMUN et DELTACOMMUN
Seulement à l'éxecution du trigger , j'ai l'erreur qui dit que ISNULL doit être déclaré. je comprends rien..
est ce que ISNULL n'est pas supporté par oracle 8i?
j'ai esssayé ifnull, nullif et coalsce mais toujours la même erreur.
quelqu'un peut m'aider SVP.
Merci