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 29/08/2005, 13h06   #1
Membre régulier
 
Inscription : août 2004
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 176
Points : 90
Points : 90
Par défaut creation de fichier txt en pl/sql

oracle 9.2 , pl/sql developer
Bonjour a tous,

se que je voulais savoir, j'ai une table, (super )

en sortie je veux obtenir plusieurs fichiers (formatés , txt ou autre extension peut m'importe), avant je n'avait besoin en sortie qu'un seul fichier (donc je le passe en parametre pour mon spool)

or maintenant je ne sait pas combien de fichier j'aurai en sortie (apres traitement, si) donc pas de passage en parametre X fichier

je voulais savoir si, deja il y a moyen de cree un fichier, en pl/sql ou pas, et si oui comment

merci
jejam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2005, 13h37   #2
Membre éclairé
 
Inscription : novembre 2002
Messages : 533
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 533
Points : 359
Points : 359
Par défaut Re: creation de fichier txt en pl/sql

Citation:
Envoyé par jejam

je voulais savoir si, deja il y a moyen de cree un fichier, en pl/sql ou pas, et si oui comment

merci
Bonjour jejam,

En pl/sql, tu peux créé des fichiers avec le package UTL_FILE

@
__________________
PpPool
PpPool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2005, 15h05   #3
Membre régulier
 
Inscription : août 2004
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 176
Points : 90
Points : 90
merci bcp PpPool
Sinon pas d'autres suggestions
jejam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2005, 15h42   #4
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
En PL/SQL il n'y a pas 36 moyens de créer des fichiers.

http://sheikyerbouti.developpez.com/pl_sql/?page=Chap8
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2005, 15h59   #5
Membre régulier
 
Inscription : août 2004
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 176
Points : 90
Points : 90
ok merci, autant pour moi
jejam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2005, 11h54   #6
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
Par défaut Je profite de ce post

pour poser une question concernant l'écriture d'un fichier depuis un script pl/sql.

Voila, j'ai vu qu'on pouvait utiliser le package UTL_FILE pour ouvrir, lire et écrire dans les fichiers. Mais les fonctions de ce package s'exécutent coté Serveur. Or je veux écrire les fichiers coté client.

J'ai vu qu'il y avait la solution Spool. Aurait-il une autre solution.

De plus, je voudrais savoir si le spool peut etre utilisé dans une procédure?
Je voudrais également savoir si dans la procédure, on doit faire un DBMS_OUTPUT.PUT_LINE("Entete") pour que ca s'écrive par la suite dans le fichier spécifié avec le spool?

Merci de vos réponses

PhaseCreative est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2005, 12h00   #7
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
Si tu veux gérer une sortie coté client il te faut gérer cela avec le SPOOL ,
Tu spécifier le fichier avant d'entrer dans le PL/SQL puis tu gére les sortie avec le package DBMS_OUTPUT.

N'oublie pas d'activer le serveroutput

Jaouad
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2005, 12h18   #8
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
D'accord

Merci d'avoir été aussi rapide.

J'en profite encore... Lorsque le résultat est une requête, est ce que le formatage se fait automatiquement ou je dois gérer moi même le formatage?

Et aussi est-ce que DBMS_OUTPUT.PUT_LINE peut contenir le résultat d'un requete SQL et non un String comme prévu?

Ah oui, surement la dernière question. Dans le fichier généré par le spool, j'ai les lignes commencant par SQL > exec nom_procédure et à la fin SQL > spool off
Et je veux les enlever du fichier ou je ne veux pas que ces lignes commencant par SQL> s'écrivent dans le fichier

J'ai essayé :
Code :
1
2
3
4
5
SET head off
SET feedback off
SET pages 0
SET echo off
et enfin SET verify off
mais ca ne marche pas.

Merci bcq de votre aide
PhaseCreative est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2005, 12h24   #9
Rédacteur/Modérateur
 
Inscription : janvier 2005
Messages : 2 320
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 320
Points : 2 368
Points : 2 368
Citation:
Envoyé par PhaseCreative
<D'accord

Merci d'avoir été aussi rapide.

J'en profite encore... Lorsque le résultat est une requête, est ce que le formatage se fait automatiquement ou je dois gérer moi même le formatage?
Tu dois toi même gérer le formattage

Citation:
Envoyé par PhaseCreative

Et aussi est-ce que DBMS_OUTPUT.PUT_LINE peut contenir le résultat d'un requete SQL et non un String comme prévu?
Il peut contenir également la valeur d'une variable
voila un exemple trés simpliste :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
SQL> SET serveroutput ON 
SQL> declare 
  2  dvp varchar2(20) ; 
  3  begin 
  4   SELECT sysdate INTO dvp FROM dual;
  5   dbms_output.put_line ( ' nous sommes le '|| dvp ) ; 
  6   end ; 
  7   
  8  /
nous sommes le 29/12/05
 
Procédure PL/SQL terminée avec succès.
Citation:
Envoyé par PhaseCreative


Ah oui, surement la dernière question. Dans le fichier généré par le spool, j'ai les lignes commencant par SQL > exec nom_procédure et à la fin SQL > spool off
Et je veux les enlever du fichier ou je ne veux pas que ces lignes commencant par SQL> s'écrivent dans le fichier

J'ai essayé :
Code :
1
2
3
4
5
SET head off
SET feedback off
SET pages 0
SET echo off
et enfin SET verify off
mais ca ne marche pas.

Merci bcq de votre aide
Il te suffit de mettre ton code dans un fichier et de l'appeller via la commande start ou @

Bon courage
Jaouad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2005, 13h47   #10
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Attention toute de même aux limitations de DBMS_OUTPUT. Avant la 10gR2, les lignes sont limitées à 255 caractères !
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2006, 13h02   #11
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
Par défaut Merci

Pour régler le problème des 255 caractères, j'ai utilisé une table intermédiaire! Merci pour l'info
PhaseCreative est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2006, 15h45   #12
Invité de passage
 
Inscription : juillet 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 4
Points : 4
Points : 4
Par défaut Encore une question

toujours avec l'utilisation du SPOOL.

Sachant que la commande SPOOL doit être utilisée en dehors des procédures, je voudrais savoir comment gérer le spool dans le cas suivant :

j'ai plusieurs script sql qui écrivent dans des fichiers différents. Les fichiers sont ouverts en début de processus et sont fermés à la fin. Donc comment gérer les spools et comment on peut spécifier dans le script pour écrire dans un fichier bien précis?

En gros, lors de mes procédures, je dois écrire dans des fichiers pour avoir la liste des anomalies.

Merci encore de votre aide
PhaseCreative est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2010, 23h05   #13
Invité de passage
 
Inscription : avril 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 9
Points : 4
Points : 4
Citation:
Envoyé par PhaseCreative Voir le message
toujours avec l'utilisation du SPOOL.

Sachant que la commande SPOOL doit être utilisée en dehors des procédures, je voudrais savoir comment gérer le spool dans le cas suivant :

j'ai plusieurs script sql qui écrivent dans des fichiers différents. Les fichiers sont ouverts en début de processus et sont fermés à la fin. Donc comment gérer les spools et comment on peut spécifier dans le script pour écrire dans un fichier bien précis?

En gros, lors de mes procédures, je dois écrire dans des fichiers pour avoir la liste des anomalies.

Merci encore de votre aide
J'ai un peu la meme problématique à savoir que je voudrais écrire coté client dans 2 fichiers de spools différents au cours d'une exécution sans la limitation de 255 caractères.

J'ai bien tenter d'utiliser le package UTL_FILE mais le fichier est créé automatiquement sur le serveur de données ce qui ne convient pas de mon cas.

Peut-on paramétrer l'UTL_FILE pour écrire sur le client ?
Peut-on spooler dans deux fichiers distincts ?
Comment peut-on contourner le probleme de la limitation a 255 carac du DBMS_OUTPUT en écrivant coté client ?

Un grand merci par avance pour vos réponses à ces questions.
Tomus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2010, 13h23   #14
Membre du Club
 
Homme
Inscription : août 2003
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Services de proximité

Informations forums :
Inscription : août 2003
Messages : 79
Points : 54
Points : 54
Bonjour,

Pour la limitation à 255, il faut faire des retours chariot avec :

DBMS_OUTPUT.NEW_LINE ;
ou
CHR(13)

Par contre, au bout d'un moment mon fichier spool est trop long et me coupe mon résultat.
Savez-vous comment le gérer ? scinder en plusieurs fichiers ?
(même problématique, on me force à passer par un spool et pas par un UTL_FILE)

Excellente journée à tous.
Cordialement,
Air startout
__________________
Air startout
startout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2010, 17h48   #15
Membre du Club
 
Inscription : novembre 2008
Messages : 46
Détails du profil
Informations personnelles :
Localisation : Royaume-Uni

Informations forums :
Inscription : novembre 2008
Messages : 46
Points : 51
Points : 51
Bonjour,

Le probleme de SPOOL incomplet peut etre due au logiciel que vous utilisez.
J'ai plusieurs fois fais l'experience d'un spool incomplet en utilisant une COMMAND WINDOW dans pl/sql developer.

Executer le script a partir d'une fenetre SQLplus classique ou alors trouvez l'options de pl/sql developer qui remedie au probleme (perso j'ai jamais eu la force de chercher )

J'espere que ca en aidera quelques uns.
Jorafali est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web