Bonjour,


Je veux créer une séquence sur une table et un trigger pour gérer un auto-incrément de l'ID de cette même table.
Voici le code que j'utilise pour la création de ma séquence (sachant que j'ai déjà rempli ma table avec des données et des ID pré-existants) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
var  v_MaxVal  NUMBER;
declare
   v_SqlStmt  VARCHAR(255);
   v_Cursor   INTEGER;
begin
   v_Cursor := dbms_sql.open_cursor;
   select NVL(max(ID_DIPOLE),0) + 1 into :v_MaxVal from BT_DIPOLE_BT_TMP2;
   v_SqlStmt := 'create sequence SEQ_DIPOLE_BT_TMP2; start with ' || to_char(:v_MaxVal);
   dbms_sql.parse( v_Cursor, v_SqlStmt, dbms_sql.native );
   dbms_sql.close_cursor( v_Cursor );
end;
En retour j'ai le droit à une belle erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
declare
*
ERREUR Ó la ligne 1 :
ORA-00911: caractÞre non valide
ORA-06512: Ó "SYS.DBMS_SYS_SQL", ligne 906
ORA-06512: Ó "SYS.DBMS_SQL", ligne 39
ORA-06512: Ó ligne 8
Je me suis inspiré d'un code généré par un outil d'import de donnée qui marche très bien..

Si quelqu'un à une idée du pourquoi du comment de ce message de bienvenue cela serait très très sympa!!