Procédure PL/SQL avec sql dynamique
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:
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