résultat d'une requete dans fichier que si requete retourne des lignes

résultat d'une requete dans fichier que si requete retourne des lignes - SQL/NoSQL - Programmation

Marsh Posté le 08-08-2007 à 13:37:31    

Bonjour,
 
J'aimerais creer un fichier qui retroune les resultats d'une requete mais si la requete (select) ne retourne aucun resultat, je ne veux pas que le fichier soit créé.
Est ce possible ?
si oui comment ?
Merci,

Reply

Marsh Posté le 08-08-2007 à 13:37:31   

Reply

Marsh Posté le 08-08-2007 à 14:11:30    

Bah oui c'est possible:
 

Code :
  1. $link=mysql_connect('localhost','root','');
  2. $db="dest123"
  3. $result = mysql_query('SELECT name FROM zutun where name ="Paul"');


 
$result est un tableau. Si il est vide, tu ne crées pas de fichier.
 
Au pif:

Code :
  1. if (count($result) > 0)
  2. {
  3. //Créer fichier
  4. }

Reply

Marsh Posté le 09-08-2007 à 09:19:22    

Bonjour,
en fait j'aimerais le faire soit dans un batch qui lance ma requete sql (fichier sql), soit dans le fichier sql.
Pour l'instant, voila mon fichier sql :
   set echo off
   Spool C:\test\test.txt
   select  name from zutun where name="Paul"                                                               ;
   Spool off
   exit;
Le probleme c'est que quand ma requete ne retrourne rien, j'ai quand meme un fichier test.txt qui est créé contenant le texte suivant : aucune ligne sélectionnée.
 
Merci encore

Reply

Marsh Posté le 09-08-2007 à 09:56:13    

durkheim =>

Citation :

$result est un tableau


FAUX, c'est une ressource :

Code :
  1. echo $result;  => affiche Resource id #xxx


Message édité par jeca le 09-08-2007 à 09:56:32
Reply

Marsh Posté le 09-08-2007 à 10:26:17    

Osef, $esult[index] retourne bien la colonne désirée.

Reply

Marsh Posté le 09-08-2007 à 10:27:54    

liloo974 a écrit :

Bonjour,
en fait j'aimerais le faire soit dans un batch qui lance ma requete sql (fichier sql), soit dans le fichier sql.
Pour l'instant, voila mon fichier sql :
   set echo off
   Spool C:testtest.txt
   select  name from zutun where name="Paul"                                                               ;
   Spool off
   exit;
Le probleme c'est que quand ma requete ne retrourne rien, j'ai quand meme un fichier test.txt qui est créé contenant le texte suivant : aucune ligne sélectionnée.
 
Merci encore


Tu n'as pas le choix ici, il te faut connaitre le nombre d'enregistrements avant d'appeller    Spool C:testtest.txt. Ca implique peut être d'appeller 2 fois ta requête.
Je te laisse voir la manière de le faire.

Reply

Marsh Posté le 13-08-2007 à 12:26:57    

durkheim a écrit :


Tu n'as pas le choix ici, il te faut connaitre le nombre d'enregistrements avant d'appeller    Spool C:testtest.txt. Ca implique peut être d'appeller 2 fois ta requête.
Je te laisse voir la manière de le faire.


 
Bonjour,
Je me suis basée sur ce que tu me dis mais je rame encore....
En fait, j'essaye de faire d'abord un select count(*) qui me donne le nombre de résultats. Mais comment dire si le résultat est différent de 0 alors je lance ma 2eme requete que je mets dans le fichier ?
Dois je le faire dans le batch ou dans mon fichier sql ?
 
Merci

Reply

Marsh Posté le 13-08-2007 à 16:48:16    

Je pensais à du PL/SQL:
 

Code :
  1. DECLARE
  2. a NUMBER;
  3. BEGIN
  4. SELECT count(*) INTO a
  5. FROM zutun
  6. WHERE 1=1;
  7. IF a>0 THEN
  8. Spool Monfichier.txt;
  9. END IF;
  10. END;


 
Ca te parle? Si ce n'est pas le cas, ce petit guide explique simplement en quoi ca consiste.

Reply

Marsh Posté le 14-08-2007 à 10:34:42    

durkheim a écrit :

Je pensais à du PL/SQL:
 

Code :
  1. DECLARE
  2. a NUMBER;
  3. BEGIN
  4. SELECT count(*) INTO a
  5. FROM zutun
  6. WHERE 1=1;
  7. IF a>0 THEN
  8. Spool Monfichier.txt;
  9. END IF;
  10. END;


 
Ca te parle? Si ce n'est pas le cas, ce petit guide explique simplement en quoi ca consiste.


 
En fait je n'arrive pas a faire le spool en pl sql mais j'avais deja essayé.
Par contre j'ai trouvé une autre solution mais je l'ai fait dans le batch.
 
Merci quand meme

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed