IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Problème avec UTL_FILE


Sujet :

PL/SQL Oracle

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut Problème avec UTL_FILE
    Bonjour,

    Je suis en train d'écrire un PL.
    Je pense que mon erreur est grossière, mais je n'arrive absolument pas à comprendre ce qu'il se passe.

    Visiblement, ça plante sur le UTL_FILE.FOPEN

    Mais je ne comprends pas du tout pourquoi !

    Code sql : 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    set serveroutput on size 1000000;
    spool &1.log;
     
    declare
     
    	-- Paramètres :
            P_Codsoc	number(3) := &2;
     
    	-- Pointeurs fichiers :
            Spoint  UTL_FILE.FILE_TYPE;
     
    begin
    	dbms_output.put_line('Création du fichier');
     
    	-- Création du fichier
    	Spoint := UTL_FILE.FOPEN('/gnxdevcan/out/fm/cedilac','test.sd','W');
     
    	dbms_output.put_line('Fichier créé');
     
    	-- Lecture de la base
    	dbms_output.put_line('Lecture de la base');
    	begin
    		for curCrit in
    		(
    			select lpad(decode(tbl.codtbl, 
            			'047', '9', 
            			'050', '5', 
            			'051', '11', 
            			'052', '8', 
            			'053', '3', 
            			'059', '6', 
            			'060', '16', 
            			'061', '10', 
            			'209', '15', 
            			'uni', '2'
            			), 2, '0') numcrit, tbl.cletbl, decode(ttu.cletbl, '052', tbl.lib1, tbl.lir) libtbl, ttu.lir nomcrit
    			from tbl ttu
    			inner join tbl on tbl.codsoc = ttu.codsoc and tbl.codtbl = lower(ttu.cletbl)
    			where ttu.codsoc = P_Codsoc
    			and ttu.codtbl in ('tbl', 'ttu')
    			and ttu.cletbl in ('047', '050', '051', '052', '053', '059', '060', '061', '209', 'UNI')
    			union all
    			select '04', codefam, lirfam, 'Fam Prod'
    			from fam
    			where codsoc = P_Codsoc
    			and typtie = 'PRO'
    		)
    		loop
    			-- Insertion de la ligne dans le fichier
    			dbms_output.put_line('On écrit une ligne...');
                    	UTL_FILE.PUTF(Spoint, '%s;"%s";"%s";"%s"\n', curCrit.numcrit, curCrit.cletbl, curCrit.libtbl, curCrit.nomcrit);
    		end loop;
     
    		dbms_output.put_line('Fin de lecture de la base');
     
           	exception
           		when NO_DATA_FOUND then
           			dbms_output.put_line('Aucune donnée trouvée');
           		when OTHERS then
           			dbms_output.put_line(sqlerrm);
           	end;
     
    	-- Fermeture du fichier
    	dbms_output.put_line('Fermeture du fichier');
    	UTL_FILE.FCLOSE(Spoint);
    end;     
    /

    Je lance comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus xxx/xxx @sql/q_fm_crit "q_fm_crit" 100
    Et l'erreur :
    old 4: P_Codsoc number(3) := &2;
    new 4: P_Codsoc number(3) := 100;
    UTL_FILE.FOPEN('/gnxdevcan/out/fm/cedilac','test.sd','W');
    Création du fichier
    declare
    *
    ERROR at line 1:
    ORA-29283: invalid file operation
    ORA-06512: at "SYS.UTL_FILE", line 536
    ORA-29283: invalid file operation
    ORA-06512: at line 14
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Alors là, je pige rien...
    Si je remplace le chemin par "." alors ça marche.

    Pourtant le dossier est valide !
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ça pourrait être un problème de droits au niveau de l'OS sur ce dossier.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Tu es sur que l'utilisateur du process du DBMS (ou ce qui en tient lieu sur ton système - Linux, Unix, autre ??) a le droit d'accès sur le répertoire spécifié ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Le processus d’Oracle doit avoir les droits d’écriture au niveau OS sur le sous-répertoire en question.

    Supprimez ce morceau de code stupide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    exception
               when NO_DATA_FOUND then
                 dbms_output.put_line('Aucune donnée trouvée');
               when OTHERS then
                 dbms_output.put_line(sqlerrm);

Discussions similaires

  1. Problème avec UTL_FILE
    Par tawaha2010 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 11/01/2011, 18h39
  2. Problème avec UTL_FILE
    Par kymior23 dans le forum PL/SQL
    Réponses: 13
    Dernier message: 12/06/2009, 10h44
  3. Problème avec Utl_File.fcopy
    Par FABFAB125 dans le forum Oracle
    Réponses: 14
    Dernier message: 09/08/2007, 11h57
  4. Probléme avec UTL_FILE.FOPEN
    Par elflamby dans le forum Oracle
    Réponses: 4
    Dernier message: 24/01/2006, 11h45
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo