IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Problème clause "ORDER BY" dans bloc PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Problème clause "ORDER BY" dans bloc PL/SQL
    Bonjour,
    j'ai une fonction qui affiche la liste des employés grace à un curseur. Dans ma fonction j'ai un paramètre : "critere" qui sert dans la requêtre SQL pour pouvoir trier les résultats en fonction de ce critère. Mon problème est que critère est un varchar2 et à pour valeur par défaut : 'nom_emp' et lorsque je crée mon curseur, la requête marche mal puisque dans mon ORDER BY est fait comme ceci :
    ORDER BY 'nom_emp' alors que je voudrais que ça soit : ORDER BY nom_emp
    sans les ' '.
    Le problème est que je ne peux pas mettre les ' ' dans le paramètre de ma fonction donc je souhaiterai convertir la chaine 'nom_emp' en nom_emp pour que le ORDER BY marche.
    Dans la page, je fais une liste déroulante avec le critère de tri choisi et là encore j'utilise mes paramètres 'nom_emp', 'prenom_emp' ... qui comportent eux aussi des apostrophes que je souhaite là aussi enlever pour que le "ORDER BY" fonctionne.

    Voici une partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    CREATE OR REPLACE PROCEDURE listeEmp(critere varchar2 default 'nom_emp') IS
    cursor CEmp is
    select num_emp, nom_emp, prenom_emp, date_nais_emp, adresse_emp,
    		ville_emp, cp_emp, tel_emp, sexe_emp, date_embauche_emp
    from EMPLOYE ORDER BY critere ;
    BEGIN
    	HTP.htmlOpen ; HTP.bodyOpen ;
            ...
    	HTP.formOpen('listeEmp') ;
    		HTP.tableOpen(cattributes=>'border="1", bordercolor="BLUE", align="center"') ;
            ...
    			HTP.tableRowOpen ;
    				HTP.tableData('Criteres de tri :') ;
    				HTP.tableData(cvalue=>HTF.formSelectOpen('critere') || HTF.formSelectOption('nom_emp')
    							  || HTF.formSelectOption('prenom_emp') || HTF.formSelectOption('date_nais_emp')
    							  || HTF.formSelectOption('ville_emp')  || HTF.formSelectOption('cp_emp')
    							  || HTF.formSelectOption('sexe_emp')   || HTF.formSelectOption('cp_emp')
    							  || htf.formSelectClose) ;
    				HTP.tableData(cvalue=>HTF.formSubmit(cvalue=>'OK'), calign=>'right') ;
    				HTP.tableData(critere) ;		  
     
                                   ...
     
    			HTP.tableRowClose ;
    		HTP.tableClose ;
    	HTP.formClose ;
    	HTP.bodyClose ;	HTP.htmlClose ;
    END listeEmp ;
    /
    Merci pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Points : 95
    Points
    95
    Par défaut
    Bonjour, regarde du coté du SQL dynamique (execute immediate)

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    je ne comprend pas bien comment je pourrai faire ceci si tu pouvais me détailler un peu plus comment faire.
    Merci.

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    2 solutions :
    - soit tu passes par du sql dynamique, dans ce cas fais une recherche sur ref cursor dans le forum, tu trouveras plein d'exemples.

    - soit tu restes en SQL statique et tu gères ta clause order by par un decode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by decode (critere, 'nom_emp', nom_emp, 'colX', colX, ...)

Discussions similaires

  1. [MySQL] Problème de quote dans une requete sql
    Par berew dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/04/2012, 21h33
  2. Variable avec quotes(simple ou double)dans un input
    Par -Neo- dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2007, 11h23
  3. Réponses: 15
    Dernier message: 21/02/2007, 17h29
  4. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo