[ORA][PRO STOC] maissss, ou est l'erreur dans la procedure....

maissss, ou est l'erreur dans la procedure.... [ORA][PRO STOC] - SQL/NoSQL - Programmation

Marsh Posté le 03-10-2003 à 22:06:20    

Z'ai un petit pb avec ma procedure stocké,  
l'idée est :
Table 1, Table 2
prendre les enregistrements de table 2, et  
 inserrer dans table 1 s'il n'existe pas déjà (par rapport à la clef primaire)
 SINON update une valeur de l'enregistement (par rapport à cette même clef)
 
CE que j'ai écrit:
/*************************** début proc ****************/
CREATE OR REPLACE procedure PROC_INS_UPDATE_PB
 (
  )
 IS
  lcount number(8);
 cursor o_cursor is
/************** je prend les valeurs de la table 2 pour comparer avec la clef de Table1 ****************/
 select  tbl2.pky1,
  tbl2.pky2,
  tbl2.pky3,
  tbl2.montant
         from table2 tbl2;
 
  curs_row o_cursor%rowtype;
 
BEGIN
OPEN o_cursor;
LOOP
   fetch o_cursor into curs_row;
/*************** je vérifie l'existance du premier select pa rapport à table1 ***********************/
   select count(*) into lcount
    from table1 tbl1
    where tbl1.pky1 = curs_row.pky1
    AND tbl1.pky2 = curs_row.pky2
    AND tbl1.pky3 = curs_row.pky3;
  if lcount=1 THEN
   UPDATE table1 Set valeur = curs_row.montant;
  ELSE
           INSERT into table1 values (    curs_row.pky1,
      curs_row.pky2,
      curs_row.pky3,
      curs_row.montant);
         COMMIT;
EXIT WHEN o_cursor%NOTFOUND
END LOOP;
CLOSE o_cursor;
END
/
/*************************** fin proc ****************/
Lorsque je l'éxécute, il me dit qu'il il y une erreur dans le script...
Petite précision, c'est ma première Pro stock sur Oracle alors j'ai écrit un peu n'importe quoi.. merci de ne pas taper...
 
Merci d'avance pour vos aides,
 
Oups93

Reply

Marsh Posté le 03-10-2003 à 22:06:20   

Reply

Marsh Posté le 04-10-2003 à 12:53:00    

Il manque un "END IF" après le "INSERT..."

Reply

Marsh Posté le 04-10-2003 à 20:12:14    

ah bon?
le "couple"  
IF.... THEN...
ELSE  
Ne suffit pas?
 

Reply

Marsh Posté le 04-10-2003 à 23:11:11    

Bin non ça suffit pas. Je connais pas de langage où ça suffise d'ailleurs. Ca permet de délimiter les instructions "faisant partie" du else des autres.

Reply

Marsh Posté le 05-10-2003 à 08:26:38    

Ok, je vais tester demain,
 
merci pour ton aide,
 
Oups93

Reply

Marsh Posté le 06-10-2003 à 12:05:15    

ça marche po... :(

Reply

Sujets relatifs:

Leave a Replay

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