Bonjour,

Je crée une procédure en Oracle qui contient un Execute Immediate pour le moins... classique. Or j'obtiens cette erreur à l'éxécution de la procédure :

SQL> exec PurgerBase
BEGIN PurgerBase; END;

*
ERREUR à la ligne 1 :
ORA-00936: Expression absente
ORA-06512: à "SYSTEM.PURGERBASE", ligne 17
ORA-06512: à ligne 1
Et voici ma procédure :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SQL> Create or replace procedure PurgerBase
  2  AS
  3   lesSimulations varchar(50);
  4   lesDomaines varchar(50);
  5   lePrefixe varchar(20);
  6   laRequete varchar(256);
  7  BEGIN
  8   lesSimulations:='select SimKey from Simulation where SimDeleted=0';
  9   lesDomaines:='select DomRowId from HSYS_Domaines';
 10   for ligne in (select * from tsversion)
 11   loop
 12    lePrefixe:=ligne.TsvPrefixeChamp;
 13    laRequete:='update '||ligne.TsvNomTable||' set '||lePrefixe||'Deleted=1 ';
 14    laRequete:=laRequete||'where ('||lePrefixe||'Simulation>0 and ';
 15    laRequete:=laRequete||lePrefixe||'Simulation not in '||lesSimulations||') or ';
 16    laRequete:=laRequete||lePrefixe||'Domaine not in '||lesDomaines;
 17    execute immediate laRequete;
 18   end loop;
 19  END;
 20  /
Que manque t'il a mon EXECUTE IMMEDIATE ?
Quel est l'équivalent Interbase Firebird et Sql Server ?