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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] order by un parametre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] order by un parametre

n°453656
hop le fou
Tu m'en diras tant
Posté le 10-07-2003 à 14:51:30  profilanswer
 

Je récupere un parametre dans un formulaire pour savoir de quelle facon je vais ordonner le resultats de ma requete (utilisation XSL,XSQL,XML)
 
un combo box comme ceci

<td>Var Tri : </td>
     <td>
      <SELECT name="VT" style="font-size:8pt;">
       <OPTION value="5"><xsl:if test="$VT=5"><xsl:attribute name="selected"/></xsl:if>Nb CT</OPTION>
       <OPTION value="6"><xsl:if test="$VT=6"><xsl:attribute name="selected"/></xsl:if>Prime Ann</OPTION>
       <OPTION value="1"><xsl:if test="$VT=1"><xsl:attribute name="selected"/></xsl:if>Code Courtier</OPTION>
       <OPTION value="3"><xsl:if test="$VT=3"><xsl:attribute name="selected"/></xsl:if>Code Postal</OPTION>
       <OPTION value="10"><xsl:if test="$VT=10"><xsl:attribute name="selected"/></xsl:if>S/P</OPTION>
       <OPTION value="11"><xsl:if test="$VT=11"><xsl:attribute name="selected"/></xsl:if>Tendance Prime Ann.</OPTION>
      </SELECT>
     </td>


 
et ensuite quand je recupere mon parametre (donc un nombre parmi ceux proposé 5 6 3 1 10 11) je l'integre dans ma requete :

blablabla
order by :VT


 
le probleme c que ca ne trie rien du tout
alors que

blablabla
order by 3


fonctionne
 
g bien vérifié la valeur de mon parametre elle est bien égale a la valeur souhaité
g essayé d'utiliser to_number mais ca ne sert à rien...
je ne comprend pas...  :??:  
 
pourquoi est ce qu il ne prend pas le tri en compte???

mood
Publicité
Posté le 10-07-2003 à 14:51:30  profilanswer
 

n°453827
El_gringo
Posté le 10-07-2003 à 16:15:32  profilanswer
 

Ben, essaye déja de savoir quelle requête tu envois à Oracle exactement, et fais gaffe a ne pas mélanger Php ou je n'sais quoi aux requêtes SQL.
Si Oracle ne fais pas le tri, c'est qu'il ne reçoit pas la bonne requête. Trouve quelle requête tu envois, et ta solution coulera de source...

n°453884
hop le fou
Tu m'en diras tant
Posté le 10-07-2003 à 16:47:03  profilanswer
 

El_gringo a écrit :

Ben, essaye déja de savoir quelle requête tu envois à Oracle exactement, et fais gaffe a ne pas mélanger Php ou je n'sais quoi aux requêtes SQL.
Si Oracle ne fais pas le tri, c'est qu'il ne reçoit pas la bonne requête. Trouve quelle requête tu envois, et ta solution coulera de source...


 
g rien compri a ce que tu dis.. :sweat:  (comment on peut ne pas savoir quelle requete on execute??  :??:)  
je sais tres bien ce que j envoie comme requete et je ne fais pas de melange avec php
c t des requetes utilisés a travers php
mon pb c que le chiffre contenu dans mon parametre n'est pas interpreté correctement par Oracle...

n°453909
tomlameche
Et pourquoi pas ?
Posté le 10-07-2003 à 17:04:53  profilanswer
 

hop le fou a écrit :

Je récupere un parametre dans un formulaire pour savoir de quelle facon je vais ordonner le resultats de ma requete (utilisation XSL,XSQL,XML)
 
un combo box comme ceci

<td>Var Tri : </td>
     <td>
      <SELECT name="VT" style="font-size:8pt;">
       <OPTION value="5"><xsl:if test="$VT=5"><xsl:attribute name="selected"/></xsl:if>Nb CT</OPTION>
       <OPTION value="6"><xsl:if test="$VT=6"><xsl:attribute name="selected"/></xsl:if>Prime Ann</OPTION>
       <OPTION value="1"><xsl:if test="$VT=1"><xsl:attribute name="selected"/></xsl:if>Code Courtier</OPTION>
       <OPTION value="3"><xsl:if test="$VT=3"><xsl:attribute name="selected"/></xsl:if>Code Postal</OPTION>
       <OPTION value="10"><xsl:if test="$VT=10"><xsl:attribute name="selected"/></xsl:if>S/P</OPTION>
       <OPTION value="11"><xsl:if test="$VT=11"><xsl:attribute name="selected"/></xsl:if>Tendance Prime Ann.</OPTION>
      </SELECT>
     </td>


 
et ensuite quand je recupere mon parametre (donc un nombre parmi ceux proposé 5 6 3 1 10 11) je l'integre dans ma requete :

blablabla
order by :VT


 
le probleme c que ca ne trie rien du tout
alors que

blablabla
order by 3


fonctionne
 
g bien vérifié la valeur de mon parametre elle est bien égale a la valeur souhaité
g essayé d'utiliser to_number mais ca ne sert à rien...
je ne comprend pas...  :??:  
 
pourquoi est ce qu il ne prend pas le tri en compte???
 


En fait je ne pense pas que tu arrive à ce que tu veux de cette façon. Quand tu fait :  
order by 3
Oracle comprend qu'il doit ordonner par la troisième collone. Mais si tu fait order by :vs, il prend ton :vs non pas comme un numero de colonne mais comme une valeur independante, ou lcomme la valeur d'une colonne si tu veux.  
Si VS = 3, order by :VS va être equivalent à order by '3'  et non order by 3 ( je sais pas si c'est très clair ... ).

n°453912
El_gringo
Posté le 10-07-2003 à 17:09:39  profilanswer
 

Mais, ce qui me trouvle un peu, c'est qu'un order by, y a pas plus simple à utiliser. Pourquoi tu mets ":" avant "vs" ? Ta colone s'appelle ":vs" ? Parce qu'en mettant simplement le nom de ta colone, ça roule. Et sinon tu peux aussi mettre le n° de la colone, comme le dit monsieur la mèche !

n°453939
MagicBuzz
Posté le 10-07-2003 à 17:27:40  profilanswer
 

c koi qui lance la requête ?
 
certainement pas le XML.
 
donc tu génères la requête avec quel langage ?
 
tu peux pas générer une chaîne de caractères, avec la valeur de ta variable plutôt que d'envoyer une variable SQL ? (à priori, là à 9 chances sur 10, tu fait un "order by null" ce qui n'est pas près de marcher...

n°454641
hop le fou
Tu m'en diras tant
Posté le 11-07-2003 à 09:16:12  profilanswer
 

El_gringo a écrit :

Mais, ce qui me trouvle un peu, c'est qu'un order by, y a pas plus simple à utiliser. Pourquoi tu mets ":" avant "vs" ? Ta colone s'appelle ":vs" ? Parce qu'en mettant simplement le nom de ta colone, ça roule. Et sinon tu peux aussi mettre le n° de la colone, comme le dit monsieur la mèche !


 
si je met : c tout simplement paske VT est un bind-param dans ma requete
j utilise une servlet xsql qui me permet d'utiliser des parametres dans ma requete et il fo mettre : devant une variable pour que celle ci comprenne
et oui je sais tres bien que avec le numéro de la colonne ca marche puisque c ce que je fais puisque la variable contient le numéro de la colonne sur laquelle je dois appliquer l'ordre...

n°454644
hop le fou
Tu m'en diras tant
Posté le 11-07-2003 à 09:19:21  profilanswer
 

MagicBuzz a écrit :

c koi qui lance la requête ?
 
certainement pas le XML.
 
donc tu génères la requête avec quel langage ?
 
tu peux pas générer une chaîne de caractères, avec la valeur de ta variable plutôt que d'envoyer une variable SQL ? (à priori, là à 9 chances sur 10, tu fait un "order by null" ce qui n'est pas près de marcher...


 
j utilise une servlet xsql sous Oracle8i
en fait oui c ca le pb c que Oracle ne comprend pas mon parametre comme une chaine de caractere donc il ne prend pas la clause en compte
j aimerai bien générer une chaine de caractere mais to_char et to_number n'ont servi a rien (sans faire d'erreur d ailleur ce qui est étrange car les 2 sont passés...)
alors comment la générer cette chaine? je ne connais pas d autre solution...

n°455156
phnatomass
Je m'empare de ton esprit !!
Posté le 11-07-2003 à 14:28:06  profilanswer
 

order by {@VT}
Par contre VT ne doit pas être déclarer dans le bind-param de ton doc XSQL.


Message édité par phnatomass le 11-07-2003 à 14:29:19
n°455197
hop le fou
Tu m'en diras tant
Posté le 11-07-2003 à 14:39:47  profilanswer
 

phnatomass a écrit :

order by {@VT}
Par contre VT ne doit pas être déclarer dans le bind-param de ton doc XSQL.


effectivement ca marche tres bien comme ca...  :)  
 
question subsidiaire(je profite tu es la 1ere personne qui a l air de connaitre bien xsql qui repond  :D ): je voudrais en plus mettre l ordre ASC ou DESC selon la valeur d attribut mais c pas possible de mettre un decode apres la variable...
 
d ailleur a tu une reponse a :
http://forum.hardware.fr/forum2.ph [...] subcat=439
 
personne n a pu me repondre et je me suis contenté de la solution que g trouvé...
ya pas mieux?
merci  :jap:

mood
Publicité
Posté le 11-07-2003 à 14:39:47  profilanswer
 

n°455423
phnatomass
Je m'empare de ton esprit !!
Posté le 11-07-2003 à 15:37:05  profilanswer
 

Citation :

question subsidiaire(je profite tu es la 1ere personne qui a l air de connaitre bien xsql qui repond  :D ): je voudrais en plus mettre l ordre ASC ou DESC selon la valeur d attribut mais c pas possible de mettre un decode apres la variable...


Oracle ne le permet pas directement .
Même principe
ORDER BY {@VT} {@ordre_tri}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] order by un parametre

 

Sujets relatifs
[SQL / Oracle] Tester un cas de concurrence.[Oracle] decode marche pas (tour de magie)
Pour les pros d'Oracle et du DUMP[oracle]
[oracle] LIMITInstallation d'Oracle : pb PLSQL ORA-06544
[Oracle] Requete conditionnelle[ORACLE] comparaison de date
JRE et ORACLE[Oracle] comment marche to_date ???
Plus de sujets relatifs à : [Oracle] order by un parametre


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