Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2710 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Tester le nombre de retours d'une requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tester le nombre de retours d'une requête

n°1045443
zedar
Posté le 13-04-2005 à 10:44:35  profilanswer
 

Bonjour,
 
Dans un programme perl, j'aimerais pouvoir tester si une requête me renvoie bien qqchose ou pas (afin de faire 2 traitements différents selon le cas).
 
J'ai testé avec un if ($sth->rows == 0) mais apparemment ça teste le numéro de la ligne, donc c'est toujours vrai la première fois.
 
J'y connais rien en perl et je trouve pas d'exemple sur ce point précis  :(  
 
Merci d'avance :jap:

mood
Publicité
Posté le 13-04-2005 à 10:44:35  profilanswer
 

n°1045483
zedar
Posté le 13-04-2005 à 11:02:18  profilanswer
 

Snif j'en étais sûr, personne regarde la cat Perl :sweat:

n°1045527
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:18:17  profilanswer
 

T'utilises quel module pour faire tes requetes ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045533
zedar
Posté le 13-04-2005 à 11:20:31  profilanswer
 

Ah quelqu'un :)
 
J'utilise DBI pour mes requêtes vers Oracle.

n°1045538
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:21:25  profilanswer
 

Et la doc de ce module n'a pas résolu ton problème ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045549
zedar
Posté le 13-04-2005 à 11:23:44  profilanswer
 

non pas vraiment :/
 
Tiens en essayant ça :  

Code :
  1. if (!defined(my $test = $sth->fetchrow_hashref))


ça a l'air de marcher (en tout cas il me sépare bien les 2 cas).
 
Par contre je risque pas de perdre le premier enregistrement (sachant qu'ensuite j'ai

Code :
  1. else {
  2. while (my $machin = $sth->fetchrow_hashref)
  3. { //traitement }

?


Message édité par zedar le 13-04-2005 à 11:24:10
n°1045555
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:28:31  profilanswer
 

Bah oui, faut tester ton $sth plutot pour savoir combien de lignes il contient


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045566
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:30:42  profilanswer
 

Citation :


rows  
  $rv = $sth->rows;
Returns the number of rows affected by the last row affecting command, or -1 if the number of rows is not known or not available.
 
Generally, you can only rely on a row count after a non-SELECT execute (for some specific operations like UPDATE and DELETE), or after fetching all the rows of a SELECT statement.
 
For SELECT statements, it is generally not possible to know how many rows will be returned except by fetching them all. Some drivers will return the number of rows the application has fetched so far, but others may return -1 until all rows have been fetched. So use of the rows method or $DBI::rows with SELECT statements is not recommended.

One alternative method to get a row count for a SELECT is to execute a "SELECT COUNT(*) FROM ..." SQL statement with the same "..." as your query and then fetch the row count from that.
 


 
ca pue un peu :/


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045568
zedar
Posté le 13-04-2005 à 11:31:34  profilanswer
 

Mais justement, quel argument du sth tester ? :)
 
Je connais pas le perl, je code ça en bloc notes et je suis perdu sans un IDE qui propose tous les arguments quand je tape -> :p)

n°1045576
zedar
Posté le 13-04-2005 à 11:33:52  profilanswer
 

arfeuh :/
 
Je vais me tourner vers une solution un peu crade mais qui marche... du genre

Code :
  1. i=0;
  2. while ($sth->rows) {
  3. ...
  4. i=i+1;
  5. }


et je teste la valeur de i à la fin... c'est bof mais bon...

mood
Publicité
Posté le 13-04-2005 à 11:33:52  profilanswer
 

n°1045578
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:34:26  profilanswer
 

zedar a écrit :

Mais justement, quel argument du sth tester ? :)
 
Je connais pas le perl, je code ça en bloc notes et je suis perdu sans un IDE qui propose tous les arguments quand je tape -> :p)


 
Bah d'ou l'utilité de la doc, j'ai fait 1 mois de perl dans ma vie et c'etait pour automatiser des configs de routeur donc on peut pas dire que l'acces à une bdd sous perl ce soit mon super trip [:itm]
 
edit: voire mon autre post plus haut


Message édité par boulax le 13-04-2005 à 11:34:46

---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045592
zedar
Posté le 13-04-2005 à 11:38:56  profilanswer
 

boulax a écrit :

Bah d'ou l'utilité de la doc, j'ai fait 1 mois de perl dans ma vie et c'etait pour automatiser des configs de routeur donc on peut pas dire que l'acces à une bdd sous perl ce soit mon super trip [:itm]
 
edit: voire mon autre post plus haut


 
Hehe je comprends ;)  
 
Merci pour ton aide, je pense utiliser l'algo bof ci-dessus... il pose pas vraiment de problèmes (perf ou autre) donc finalement il me convient.
 
:jap:

n°1045597
boulax
Inserer phrase hype en anglais
Posté le 13-04-2005 à 11:41:20  profilanswer
 

zedar a écrit :

arfeuh :/
 
Je vais me tourner vers une solution un peu crade mais qui marche... du genre

Code :
  1. i=0;
  2. while ($sth->rows) {
  3. ...
  4. i=i+1;
  5. }


et je teste la valeur de i à la fin... c'est bof mais bon...


 
Ca marchera pas, t'as pas lu l'extrait de doc que j'ai posté ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1045609
zedar
Posté le 13-04-2005 à 11:45:44  profilanswer
 

Euh tu parles du $sth->rows ?
 
C'est bien sûr un $sth->fetchrow_hashref, au temps(/autant) pour moi. En fait la lecture normale de l'enregistrement (qui marche actuellement). J'insère simplement un compteur d'enregistrements dans ma boucle.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Tester le nombre de retours d'une requête

 

Sujets relatifs
[JAVA] Tester un JTexfield[Image-PHP] Comment recuperer nombre de couleur ?
Comment conserver les retours à la ligne ?Connection à db + affichage d'une requête
Dans une requête, ajouter un champ "ordre" qui s'incrémente[Résolu]PEAR : DB_Pager : Paginer une requete Mysql
Sauver plusieurs éléments de ma requête SQL dans un vecteur [RESOLU][MySQL] Comment éviter une requete de type : Select ... Where .. IN .?
N'afficher qu'un nombre limité de mots...SQL | Requete de débutant, mais je bug !!!
Plus de sujets relatifs à : Tester le nombre de retours d'une requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR