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 :
Et voici ma 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
Que manque t'il a mon EXECUTE IMMEDIATE ?
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 /
Quel est l'équivalent Interbase Firebird et Sql Server ?
Partager