Bonjour,
J'ai un problème sur un package PL/SQL pourtant simple:
1 curseur principal sur une table (en jointure avec une autre)
des tests dans la boucle et si certains sont concluants, une mise à jour de donnée sur le current cursor
=> la compile passe mais l'execution plante en ORA-1410 sur la premiere mise à jour à faire
declare
...
curr_Crit PKG_PURGE.TYP_CRITERES;
CURSOR CUR_T_LOG IS
SELECT T_LOGCR_LCR.rowid idLog, LCR_LOG_ID , LCR_DATE_CRE , LCR_DATE_SUP, DCR_NATURE
FROM T_LOGCR_LCR, T_DEFLOG_CR_DCR
WHERE T_LOGCR_LCR.DCR_CODE_CR = T_DEFLOG_CR_DCR.DCR_CODE_CR
FOR UPDATE OF T_LOGCR_LCR.LCR_DATE_SUP;
lig_curs CUR_T_LOG%ROWTYPE;
begin
...
open CUR_T_LOG;
<<boucleT_LOG>>
loop
fetch CUR_T_LOG into lig_curs;
if CUR_T_LOG%NOTFOUND then
exit boucleT_LOG;
end if;
if lig_curs.DCR_NATURE = PKG_PURGE.c_NIVEAU_WARN then
if lig_curs.LCR_DATE_CRE <= curr_Crit.warn_datePurge then
UPDATE T_FG_LOGCR_LCR SET LCR_DATE_SUP = SYSDATE WHERE CURRENT OF CUR_T_LOG;
end if;
end if;
end loop boucleT_LOG;
close CUR_T_LOG;
end;
çà ne passe pas non plus sans current cursor (en utilisant les ROWID)
à vrai dire, je ne vois pas, j'ai trouvé dans le manuel oracle le même exemple (avec 2 tables accèdées)
la version oracle utilisées est la 9.2.0.6.0
merci pour votre aide
Partager