Bonjour,
Pour mon taff j'ai un petit job à faire sous en SQL (BDD Oracle)
Je dois faire une requête sur une table avec certaines conditions, mettre en forme le résultat (je vais expliquer après ce que j'entends par mettre en forme le résultat) et exporter le tout dans un fichier.
Quand je dis "mettre en forme le résultat", je parle de "formatter le resultat de la requête en concaténant des choses avant et après"
En gros, si ma requête était:
Select NOM, VOITURE, COULEUR from MA_TABLE where NOM='TOTO'
Elle renverrait
TOTO, PIGEOT, ROUGE
Et moi je veux le résultat: La voiture de TOTO est une PIGEOT ROUGE.
Ma requête ressemble donc à ça:
Select 'La voiture de '||NOM,||' est une ' ||VOITURE, COULEUR from MA_TABLE where NOM='TOTO'
(A peu de choses près)
Et j'ai en sortie
La voiture de TOTO est une PIGEOT ROUGE.
Jusque là, ça va.
POur exporter le résultat dans un fichier, en suivant une méthode que j'avais trouvée je ne sais plus où, je colle juste avant ma requête
SET LINESIZE 1000;
SET HEADING OFF;
SET ECHO OFF;
SET FEEDBACK OFF;
SPOOL C:\MON_REPERTOIRE\LE_RESULTAT_DE_MA_REQUÊTE.txt;
Et un petit SPOOL OFF juste après.
Encore une fois, victoire, j'ai un beau fichier texte avec écrit dedans
La voiture de TOTO est une PIGEOT ROUGE
Sauf que bien sur, pour mon taff, il y a beaucoup plus de champs renvoyé par la requête, qui est elle aussi bien plus balèze.
Mais en gros, imaginez que je veux pas savoir ce qu'a TOTO, mais plutot ce qu'a ROBERT... Vous allez me dire "Remplace TOTO par ROBERT dans ta requête"...
Certes mais dans le cas du taff que j'ai à faire, c'est trop ch**** à faire
Donc j'ai mis au début de ma requête
DEFINE NAME = TOTO (ou ROBERT ou ce que vous voulez), et je remplace mon WHERE NAME = TOTO par WHERE NAME = &NAME
ET effectivement, ça marche bien.
Sauf !
Sauf que dans mon fichier texte qui reçoit le résultat de ma requête, j'ai bien
La voiture de TOTO est un PIGEOT ROUGE, mais juste avant ça, j'ai
old: Select 'La voiture de '||NOM,||' est une ' ||VOITURE, COULEUR from MA_TABLE where NOM='TOTO'
new: Select 'La voiture de '||NOM,||' est une ' ||VOITURE, COULEUR from MA_TABLE where NOM='$NAME'
Ca c'est quand je bosse sous Toad.
Si je lance ma requête avec SQL+, ça me change un peu la tête du début du fichier.
SQL> 1 Select 'La voiture de '||NOM,||' est une ' ||VOITURE, COULEUR from MA_TABLE where NOM='&NAME'
ancien 1: &NAME
nouveau 1: TOTO
Suivi du résultat de ma requête....
Mais le problème reste le même: J'ai un paquet d'info en entête de mon fichier de résultat dont je me fiche éperduement et que j'aimerais voir disparaitre.
Quelqu'un a une idée ?
Partager