je me demande si TEST n'est pas un mot réservé
Tu es bien connecté SYSTEM pour la création et le grant ?
je me demande si TEST n'est pas un mot réservé
Tu es bien connecté SYSTEM pour la création et le grant ?
J'ai tester avec SYS et SYSTEM
Et j'ai aussi tester un autre nom que TEST.
A koi sert UTL_FILE_DIR ??
à rien à partir de la 8i, sinon c'est ce qui existait à la place de DIRECTORY
Alors sous DOS sur le serveur fait :
et donne le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 dir /q D:\ORA817\TEST echo %USERNAME% echo toto > D:\ORA817\TEST\toto.txt dir /q D:\ORA817\TEST\toto.txt![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 dir /q D:\ORA817\TEST : 26/05/2004 13:57 4 BUILTIN\Administrateurnumero.txt echo %USERNAME% : onduleur dir /q D:\ORA817\TEST\toto.txt : 26/05/2004 15:39 7 BUILTIN\Administrateurtoto.txt
c mon user que je peut utiliser sur le serveur, il est dans le groupe d'administrateur au point de vue active directory.
est-ce que c'est avec ce user que tu as créé et lancé la base ?
Dans le service Oracle tu vois le user qui lance la base![]()
Non c pas ce user qui a crée et lancé la base c le user 'Administrateur'
ca serait ca l'erreur? pourtant le user que j'utilise est dans le meme groupe de securité que l'administrateur.
non mais je viens de voir que les répertoire sont bien à Administrateurs donc c'est OK.
Le répertoire serait pas en lecture seule ou avec des droits restreints (cf propriétés)
non pas de lecture seule ni de droits restreints.
ça dit quoi ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DECLARE f_file_id UTL_FILE.FILE_TYPE; v_line VARCHAR2(4000); BEGIN f_file_id := UTL_FILE.FOPEN('TEST','numero.txt','r'); UTL_FILE.GET_LINE(f_file_id,v_line); DBMS_OUTPUT.PUT_LINE(v_line); EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLERRM); END; /
le mot testlecture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SQL> DECLARE 2 f_file_id UTL_FILE.FILE_TYPE; 3 v_line VARCHAR2(4000); 4 BEGIN 5 f_file_id := UTL_FILE.FOPEN('TEST','numero.txt','r'); 6 UTL_FILE.GET_LINE(f_file_id,v_line); 7 DBMS_OUTPUT.PUT_LINE(v_line); 8 EXCEPTION 9 WHEN OTHERS THEN dbms_output.put_line(SQLERRM); 10 END; 11 / Procédure PL/SQL terminée avec succès.
N'oubliez pas de taper :
Sous Sql*Plus avant d'exécuter votre block PL/SQL
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET SERVEROUTPUT ON
Reponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part User-Defined Exception
c'est incroyable ça :-?
Bon on va essayer sur un exemple vraiment basique, que donne le résulltat des lignes suivantes :
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 CREATE OR REPLACE DIRECTORY MONREP AS 'C:\'; GRANT READ, WRITE ON DIRECTORY MONREP TO public; DECLARE f_file_id UTL_FILE.FILE_TYPE; v_line VARCHAR2(4000); BEGIN f_file_id := UTL_FILE.FOPEN('MONREP','numero.txt','a'); UTL_FILE.PUT_LINE(f_file_id,'abcdefghijklmnopqrstuvwxyz'); UTL_FILE.FCLOSE (f_file_id); f_file_id := UTL_FILE.FOPEN('MONREP','numero.txt','r'); UTL_FILE.GET_LINE(f_file_id,v_line); DBMS_OUTPUT.PUT_LINE(v_line); UTL_FILE.FCLOSE (f_file_id); EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLERRM); UTL_FILE.FCLOSE_ALL; END; /
Veuillez trapper les exceptions suivantes :
INVALID_PATH La directorie ou le nom de fichier est invalide
INVALID_MODE Mode d'ouverture invalide pour la fonction FOPEN
INVALID_FILEHANDLE Pointeur de fichier invalide
INVALID_OPERATION Le fichier ne peut être ouvert ou manipulé
READ_ERROR Erreur système pendant une opération de lecture
WRITE_ERROR Erreur système pendant une opération d'écriture
INTERNAL_ERROR Erreur PL/SQL non spécifiée
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 CREATE OR REPLACE DIRECTORY MONREP AS 'C:\'; GRANT READ, WRITE ON DIRECTORY MONREP TO public; SQL> CREATE OR REPLACE DIRECTORY MONREP AS 'C:\'; Répertoire créé. SQL> GRANT READ, WRITE ON DIRECTORY MONREP TO public; GRANT READ, WRITE ON DIRECTORY MONREP TO public * ERREUR à la ligne 1 : ORA-22928: privilège sur répertoires non valide SQL> SQL> DECLARE 2 f_file_id UTL_FILE.FILE_TYPE; 3 v_line VARCHAR2(4000); 4 BEGIN 5 f_file_id := UTL_FILE.FOPEN('MONREP','numero.txt','a'); 6 UTL_FILE.PUT_LINE(f_file_id,'abcdefghijklmnopqrstuvwxyz'); 7 UTL_FILE.FCLOSE (f_file_id); 8 9 f_file_id := UTL_FILE.FOPEN('MONREP','numero.txt','r'); 10 UTL_FILE.GET_LINE(f_file_id,v_line); 11 DBMS_OUTPUT.PUT_LINE(v_line); 12 UTL_FILE.FCLOSE (f_file_id); 13 14 EXCEPTION 15 WHEN OTHERS 16 THEN 17 dbms_output.put_line(SQLERRM); 18 UTL_FILE.FCLOSE_ALL; 19 END; 20 / User-Defined Exception Procédure PL/SQL terminée avec succès.
ORA-22928: privilège sur répertoires non validec'est pas vrai
sheik -> là c'est pas utile pour le moment, c'est pas l'exception qui est généré de toute façon![]()
Partager