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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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
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.