Erreur : ISNULL is not Declared sur Orale 8i

Erreur : ISNULL is not Declared sur Orale 8i - SQL/NoSQL - Programmation

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
 

Code :
  1. CREATE OR REPLACE TRIGGER trig_langue
  2. AFTER INSERT ON COMMUN.ES_LANGUE
  3. FOR EACH ROW
  4. DECLARE
  5. SPY INTEGER;
  6. BEGIN
  7.    if inserting then
  8.    select ISNULL(DML,0) into SPY from DELTACOMMUN.ES_LANGUE where code = :new.code;
  9.    if SPY = 3 then
  10.     insert into DELTACOMMUN.ES_LANGUE values (:new.code,:new.libelle,:new.symbole,2);
  11.    else 
  12.    insert into DELTACOMMUN.ES_LANGUE values (:new.code,:new.libelle,:new.symbole,1);
  13.    end if;
  14.    end if;


 
 
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

Reply

Marsh Posté le 13-04-2007 à 13:43:30   

Reply

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;

Reply

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!!

Reply

Marsh Posté le 13-04-2007 à 13:56:54    

nvl(DML,0)

Reply

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.

Reply

Marsh Posté le 13-04-2007 à 14:12:37    

est ce qu'on peut écrire:
 
SPY := nvl(select DML from ES_LANGUE,0)??

Reply

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;

Reply

Marsh Posté le 13-04-2007 à 16:03:10    

Merci beaucoup ça a marché

Reply

Sujets relatifs:

Leave a Replay

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