2 update avec un curseur probleme
Bonjour a tous,
j ai un petit probleme avec mon bloc pl/sql.
Je veux faire des updates sur 2 tables dans un bloc pl/sql.
Je verouille d'abord mes champs via un curseur.
Apres execution du bloc, aucune modifications n'a eu lieu.
Si je fais des bloc PL/SQL avec chacun un update sur une table, ca fonctionne.
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
|
declare
cursor cur_maj is
select
p.statutproduit,
r.CODEGUICHET
from test_crm p, test_rib r
where r.CODEGUICHET = 1
and p.statutproduit = r.CODEGUICHET
for update of
p.statutproduit,
r.CODEGUICHET;
nb_lg NUMBER :=0;
date_debut DATE := sysdate;
begin
execute immediate('alter session set nls_date_format=''DD/MM/YYYY''');
for cur_t in cur_maj loop
update test_crm p
set p.statutproduit = 9
where current of cur_maj;
update test_rib r
set r.CODEGUICHET = '87000'
where current of cur_maj;
nb_lg := cur_maj%ROWCOUNT;
dbms_output.put_line('TTTTTT- Nombre de lignes : '||nb_lg);
end loop;
dbms_output.put_line('- Nombre de lignes : '||nb_lg);
end;
/ |
Je pense que mon probleme vient du where current of cur_maj que j'utilise dans mes 2 update. Est-ce que le fait d'update le premier, modifie le curseur et ensuite plus dispnible pour le 2 update.( puisque si on refait le select de l'update, il ne serait plus contenu dedans)
J'ai également testé de mettre un commit, avant et apres le "end loop", sans succes.
Je fais peut etre fausse route, avez-vous des idees ?
Une derniere question, comment peut on savoir si un update s'est bien déroulé en pl/sql ? (en mode normale on a un 1 ligne mise a jour)
Merci d avance
Cordialement