qu'est ce qui est le mieux à utiliser et c'est quoi la grande difference ?
Version imprimable
qu'est ce qui est le mieux à utiliser et c'est quoi la grande difference ?
En simplifiant :
- utl_file génère un fichier sur le serveur de base de données
Pour plus d'informations sur utl_file :
http://sheikyerbouti.developpez.com/...?page=Chap8#L8
- spool permet de générer un fichier sur le poste d'où est exécute le script (ou la requête)
De plus spool est une instruction SQL*Plus et ne peut pas exécuté dans un bloc PL/SQL.
Suivant le contexte, l'un ou l'autre est plus adapté. Mais il est difficile de dire comme cela lequel est mieux que l'autre.
comme l'a dis plaineR, tout dépend de ce que l'on veut faire, cependant, en plus de la différence mentionnée, il faut savoir qu'à l'aide UTL_FILE, on a plus de libérté par rapport à l'export des données. par exemple, on peut décider nous même du format des données de sorties (avec quel type de délimiteur, doit on ajouter du texte ... ), alors qu'avec spool, on a largement moins de controle sur la sortie.
Spool reste comme même efficace pour ce qui est de la génération des rapports instantannées, a conditions de bien s'y connaitre en sql*plus ;)
AEMAG
Bonjour,
Pour completer ce qu'à dit plaineR à propos du spool :
Effectivement, un spool ne peux pas s'exécuter dans un bloc pl, mais il peut très bien l'encadrer. Et les donnees peuvent être enregistrer dans le fichier de sortie grace au package DBMS_OUTPUT.
Voili, voilou
mais attention, DBMS_OUTPUT est limité en nombre de caractères affichés ;)
Avec la 10g R2, le buffer de DBMS_OUTPUT est maintenant illimité: http://download-uk.oracle.com/docs/c....htm#sthref147
C'est vrai que depuis la 10gR2, l'intérêt de utl_file s'amenuise, il reste néanmoins intéressant dans les 2 cas suivant :
- génération d'un fichier depuis une procédure/fonction stockée ou depuis un package
- écriture de données binaires
Avant la 10gR2, c'était le seul moyen (à ma connaissance) pour générer des fichiers de grande taille depuis un bloc PL/SQL.
UTL_FILE est un peu plus lourd d'utilisation que spool :
- nécessiter de créer des directories et de donner des droits à chacun des utilisateur oracle
- le fichier est généré sur le serveur de base de données, il fautdonc souvent gérer derrière un outil pour rappatrier le fichier sur le poste client.
Comme plaineR,
Je me suis tournée vers UTL_FILE car j'avais besoin de généré des fichiers dont les lignes étaient assez importante et des fichiers, et c'est le seul moyen que j'avais trouvé !
Donc si vous avez une version antérieure à la 10gR2, il faut privilégier UTL_FILE sinon le spool est idéal (en plus on peux générer le fichier n'importe où) !
Après cela dépends des besoins.
voili, voilou
Ca m'interresse beaucoup :salut:Citation:
Envoyé par kalyparker
(j'ai un client 8.17 sur windows et j'attaque une base 9.2.0.6)
Quelqu'un peut donner un exemple ?
Code:
1
2
3
4
5
6
7
8
9
10 set serveroutput on spool fichier DECLARE <code> BEGIN <code> DBMS_OUTPUT.PUT_FILE ... END; / spool off
Attention dans ces versions les dbms_output sont limités à 1000000 de caractères et 255 caractères par ligne.Citation:
Envoyé par meuledor
je ne trouve aucune doc sur DBMS_OUTPUT.PUT_FILE :?
PUT_LINE faute de frappe :oops:Citation:
Envoyé par meuledor