Bonjour,

Je trappe l'erreur UTL_FILE.WRITE_ERROR lorsque je fais le utl_file.flush d'une grosse string de 1431 charactere.

voici le code :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
    v_open_mode	:=	C_APPEND_MODE;
    file_return	:=	UTL_FILE.FOPEN	(location	=>	t_location
			,filename  	=>	t_filename
			,open_mode 	=>	C_APPEND_MODE
			);
 
 
   UTL_FILE.PUT_LINE (file	=>	file_return
		,buffer		=> 	t_text
		  );
  insert into tab_trace values ('1','4','2'||length(t_text));
  commit;				  
  UTL_FILE.FFLUSH			(file_return);
  insert into tab_trace values ('1','4','3');
  commit;
  UTL_FILE.FCLOSE ( file_return );
  insert into tab_trace values ('1','4','4');
  commit;
 
EXCEPTION
WHEN	UTL_FILE.INVALID_PATH	THEN
	insert into tab_trace values ('1','4','ERR1');
	COMMIT;
WHEN	UTL_FILE.INVALID_MODE	THEN
	insert into tab_trace values ('1','4','ERR2');
	COMMIT;
WHEN	UTL_FILE.INVALID_OPERATION	THEN
	insert into tab_trace values ('1','4','ERR3');
	COMMIT;
WHEN	UTL_FILE.WRITE_ERROR		THEN
	insert into tab_trace values ('1','4','ERR4');
	COMMIT;
WHEN	UTL_FILE.INVALID_FILEHANDLE	THEN
	insert into tab_trace values ('1','4','ERR5');
	COMMIT;
WHEN	UTL_FILE.READ_ERROR			THEN
	insert into tab_trace values ('1','4','ERR6');
	COMMIT;
WHEN	NO_DATA_FOUND		THEN
	insert into tab_trace values ('1','4','ERR7');
	COMMIT;
WHEN	VALUE_ERROR			THEN
	insert into tab_trace values ('1','4','ERR8');
	COMMIT;
WHEN	OTHERS				THEN
	insert into tab_trace values ('1','4','ERR9');
	COMMIT;
END;
Lorsque je roule ca, il plante à la ligne du UTL_FILE.FFLUSh puisque je n'ai pas le insert ('1','4','3') dans la table tab_trace mais j'ai la trace de l'erreur
UTL_FILE.WRITE_ERROR, puisque j'ai ('1','4','ERR4') dans la table tab_trace.

Si c'est la longueur de ma variable (je ne vois pas pourquoi), il n'aurais pas du planté lors du PUT_LINE?

qu'est-ce qui pourrait faire planter le flush... j'ai de l'espace sur le serveur et j'ai les droit d'écriture...

avez-vous une idée?

merci