hello,
dans une pl/sql, lorsque la requete truncate table ma_table est executée,
l'erreur ORA-0054 apparait de temps en temp et parfois tout le temps.
Pourtant il n'y a aucun process en parallel qui execute la pl.
la gestion de l'appel est gérée via une table avec un champ status
quand le status = en_cours, on n'excute pas la pl. ce check se trouve au debut de la pl
et seule la pl utilise la table à truncater et tous les curseurs sont bien fermés (en cas d'exception également)
j'ai une déclaration comme
Type t_tablo Is Table Of ma_table.refElement%Type INDEX BY BINARY_INTEGER;
Est-ce que ca pourrait locker la table? si oui comment pourrais-je écrire autrement la déclaration ? sachant que t_tablo est utilisé un peu partout dans la pl :
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
| CREATE OR REPLACE PACKAGE BODY mon_pkg AS
Type t_tablo Is Table Of ma_table.refElement%Type INDEX BY BINARY_INTEGER;
PROCEDURE main as
begin
if est_en_cours=1 then
log:
else
execute immediate 'truncate table ma_table';
traiter;
end if
exception
when others then
fermer tous les curseurs ouverts
end main;
END pkg ;
/ |
Merci d'avance pour votre aide.
Partager