Salut à tous,


Soit la procedure suivante:

J’essaye de faire un update sur table. Mais avant de faire le update je veux verifier la syntaxe de mon code sql en l’ecrivant dans une table d’essaie. J’obtient toujours la faute suivante : ORA-00972: identifier is too long

Quelqu’un peut-il me dire comment faire un update dynamique?

J’ai lu le cours suivant(http://sheikyerbouti.developpez.com/execute_immediate/), mais n’a malheureusemet pas trouvé mon bonheur.

Je cherche depuis des heures quelques exemples sur le net en vain.

Mon code
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
CREATE OR REPLACE PROCEDURE table_essaie_update IS 
 
  erreur           varchar2(200);
  stmt_str         varchar2(32000);
  v_table          varchar2(256);
 
  CURSOR c1 IS SELECT * FROM ma_table WHERE id_medecin = '674' ; 
 
 
BEGIN
 
    FOR c1_rec IN c1 LOOP 
      begin
        delete from table_essaie;
 
        select nom_table into v_table from toute_tables where id = c1_rec.tbl_id;
 
        stmt_str := 'UPDATE' || v_table || 
        'SET
          NAME = ''' || c1_rec.NAME|| ''' ';
 
 
          insert into table_essaie (table_essaie) values (stmt_str);
          execute immediate stmt_str;
          commit;          
 
    exception
            when others then            
        rollback;
                erreur := substr(sqlerrm,1,200);
        insert into table_essaie (table_essaie ) values (erreur);        
 
        end; 
    END LOOP;
COMMIT;
END table_essaie_update;
Merci d'avance pour votre aide
Fiona