Bonjour,

J'utilse Oracle 10g et j'ai besoin de faire une fonction PL/SQL qui écrit dans un fichier. Malheuresement j'obtiens l'erreur suivante des l'ouverture du fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
ERREUR :ORA-20100: ORA-29283: opération non valide sur le fichier
ORA-06512: à "SYS.UTL_FILE", ligne 475
ORA-29283: opération non valide sur le fichier [FICHIERS_OUT] -> fic.txt
STATUS=-1 SQLERRM=ORA-20100: ORA-29283: opération non valide sur le fichier
ORA-06512: à "SYS.UTL_FILE", ligne 475
ORA-29283: opération non valide sur le fichier [FICHIERS_OUT] -> fic.txt 
STATUS = -1
SQLERRM = ORA-20100: ORA-29283: opération non valide sur le fichier
ORA-06512: à "SYS.UTL_FILE", ligne 475
ORA-29283: opération non valide sur le fichier [FICHIERS_OUT] -> fic.txt
PL/SQL procedure successfully completed
Avec 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
50
51
52
53
54
55
56
57
	FUNCTION enregTrans
		(
		p_VAR VARCHAR2	
		)
	RETURN PARAMETERS_VALUES_ARRAY
	   AS
  	   	 v_data  PARAMETERS_VALUES_ARRAY := PARAMETERS_VALUES_ARRAY();
 
		 Fic_out  VARCHAR2(128) := 'fic.txt';
		 Dir_out  VARCHAR(30):= 'FICHIERS_OUT' ;
 
		 FicOUT	UTL_FILE.FILE_TYPE ;
 		  -- Tampon de travail --  
  		  Ligne	VARCHAR2(32767) ;  
  		  -- Message --
  		  Msg    VARCHAR2(256) ;
  		  -- Exception --
  		  Fin    EXCEPTION ;
 
	   BEGIN
	     DECLARE
 
        BEGIN
					inproc ('enregTrans(' ||  p_VAR  || ')' );
 
 
 
					BEGIN
    					  FicOUT := UTL_FILE.FOPEN(Dir_out,Fic_out,'W',32764) ;
  					EXCEPTION
    						WHEN OTHERS THEN
								Msg := SQLERRM || ' [' || Dir_out || '] -> ' || Fic_out;
								RAISE Fin ;
  					END ;	
 
 
  					EXCEPTION
   						 WHEN Fin THEN
     					 UTL_FILE.FCLOSE_ALL ;
    					 RAISE_APPLICATION_ERROR( -20100, Msg ) ;
					END ;
 
 
					set_Parameters_Values(v_data,'STATUS', '0');
					outproc (v_data) ;
          RETURN (v_data);
 
       EXCEPTION
		   -- exception section
          WHEN OTHERS THEN
							MyDebug ('ERREUR :' || SQLERRM);
							set_Parameters_Values(v_data,'STATUS', '-1');
							set_Parameters_Values(v_data,'SQLERRM', SQLERRM);
							outproc (v_data) ;
   	  	      RETURN (v_data);
 
     END;

En ayant auparavant fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
CREATE DIRECTORY FICHIERS_OUT AS 'E:\documents' ;
GRANT READ, WRITE ON DIRECTORY FICHIERS_OUT TO PUBLIC ;
Merci pour votre aide ;-)