Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 16h25   #1
Membre du Club
 
Étudiant
Inscription : mars 2007
Messages : 163
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 163
Points : 42
Points : 42
Par défaut [Oracle 9i]PLSQL: Ecrire dans un fichier

Bonjour à toutes et à tous,

Je voudrai écrire dans un fichier des lignes de taille supérieure à 256 caractères.
Aujourd'hui, j'utilise la fonction:
Code :
1
2
3
 
MA_LIGNE VARCHAR2(256);
UTL_FILE.PUT_LINE(FILE_HANDLE_DETAIL, MA_LIGNE);
Existe-il un moyen pour que la taille de ma ligne soit > à 256.

Merci d'avance.
__________________
mamid
mamid1706 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 19h17   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous avez pris plus de temps pour poster ce message que pour chercher une solution :
Code :
1
2
MA_LIGNE VARCHAR2(32767);
UTL_FILE.PUT_LINE(FILE_HANDLE_DETAIL, MA_LIGNE);
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 10h33   #3
Membre du Club
 
Étudiant
Inscription : mars 2007
Messages : 163
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 163
Points : 42
Points : 42
Bonjour Waldar,

Merci pour votre réponse. En fait, dans l'exemple écrit, ci-dessous, j'ai écrit VARCHAR2(256) uniquement pour montrer cette limite de 256 caractères.
Dans mon programme, la déclaration est VARCHAR2(3000);
Et le bogue est quand j'essaie d'écrire dans le fichier, non pas quand j'écris dans la variable.

Merci.
__________________
mamid
mamid1706 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 13h50   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Quel bogue ?
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 17h01   #5
Membre du Club
 
Étudiant
Inscription : mars 2007
Messages : 163
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 163
Points : 42
Points : 42
Citation:
Envoyé par McM Voir le message
Quel bogue ?
Bonjour McM,
Le bogue est ci-dessous. Le bogue apparait quand j'ai une chaine de caractères de taille supérieur à 256. En cherchant sur le net, j'ai trouvé que le PUT_LINE ne peut insérer que chaine de taille inférieur à 256.

ORA-29285: erreur d'écriture sur le fichier
ORA-06512: à "SYS.UTL_FILE", ligne 18
ORA-06512: à "SYS.UTL_FILE", ligne 722

Merci.
__________________
mamid
mamid1706 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 17h09   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
La limite de 256 concerne la procedure PUT_LINE dans le package DBMS_OUTPUT et non pas UTL_FILE.PUT_LINE
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/03/2011, 18h17   #7
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mars 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : mars 2011
Messages : 15
Points : 33
Points : 33
Par défaut utiliser le paramètre facultatif Max_linesize

Bonjour,

Il faudrait essayer en ajoutant un paramètre supplémentaire à l'ouverture du fichier :
F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','W',32000);

Détail :
Code :
1
2
3
4
5
6
UTL_FILE.FOPEN (
   location     IN VARCHAR2,
   filename     IN VARCHAR2,
   open_mode    IN VARCHAR2,
   max_linesize IN BINARY_INTEGER) 
  RETURN file_type;
http://download.oracle.com/docs/cd/B...e.htm#i1003526

Salutations
t.merle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h48.


 
 
 
 
Partenaires

Hébergement Web