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
Merci d'avance pour votre aide
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;
Fiona
Partager