Bonjour,
je suis en oracle 10g et windows 2003
POur mon applicatif j'ai besoin de lire et créer des fichier ascii avec utl_file
et de lire le catalogue d'un reprtoire pour recupérer certain fichier.
j'ai donc utiliser la procedure java que l'on trouve sur internet pour permettre
de recuperer le contenu d'un repertoire dans une table oracle.
En local sur le serveur aucun probleme.
Par contre j'ai eu besoin que mon repertoire soit sur un autre serveur 2003
et la plus rien ne marche
Apres diverse recherche j'ai trouvé qu'il fallait changer le user de chargement
des services oracle pour qu'ils puissent accéder au reseau.
Sa fonctionne maintenant avec utl_file
Par contre pour la proc java impossible , le même chemin en \\serveur\rep
, ça plante .
j'ai essayé avec
ça n'a rien donné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 BEGIN DBMS_JAVA.GRANT_PERMISSION('USER ,'SYS:java.io.FilePermission' ,'\\serveur\rep ,'read'); END; / commit;
Quelqu'un a t'il deja utilisé cette methode pour lire un chemin reseau ?
Je vous mets les sources utilisés et le message d'erreur
Merci d'avance de vos reponses
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 CREATE GLOBAL TEMPORARY TABLE DIR_LIST ( FILENAME VARCHAR2(255) ) ON COMMIT PRESERVE ROWS / --Source java pour la lecture d'un repertoire create or replace and compile java source named "DirList" as import java.io.*; import java.sql.*; public class DirList { public static void getList(String directory) throws SQLException { File path = new File( directory ); String[] list = path.list(); String element; for(int i = 0; i < list.length; i++) { element = list[i]; #sql { INSERT INTO DIR_LIST (FILENAME) VALUES (:element) }; } } } / --Procedure pour l'appel du programme java 'DirList' create or replace procedure get_dir_list( p_directory in varchar2 ) as language java name 'DirList.getList( java.lang.String )'; /
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 SQL> exec get_dir_list('c:\'); Procédure PL/SQL terminée avec succès. SQL> exec get_dir_list('\\serveur\partage2'); BEGIN get_dir_list('\\serveur\partage2'); END; * ERREUR à la ligne 1 : ORA-29532: appel Java arrêté par une exception Java non interceptée : java.lang.NullPointerException ORA-06512: à "ABLRC.GET_DIR_LIST", ligne 1 ORA-06512: à ligne 1
Partager