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

Oracle Discussion :

[8i] Requete selective


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Par défaut [8i] Requete selective
    bonjour,

    J'ai vu des sujets similaire mais rien qui ne se rappochait à mon problème.
    J'ai une requête qui est une extraction de donnée, aujourd'hui je dois lui ajouté certains critères selon le choix d'un user.

    J'aimerai donc savoir s'il existe un moyen pour conditionner les critères d'une requête.

    Ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CHP1,CHP2 FROM UNETABLE WHERE CHP3 = 'VALEUR' AND CHP4 > 2
    Je voudrais que selon le choix de l'utilisateur la requete soit tantot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CHP1,CHP2 FROM UNETABLE
    tantot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CHP1,CHP2 FROM UNETABLE WHERE CHP4 > 2
    ou bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CHP1,CHP2 FROM UNETABLE WHERE CHP3 = 'VALEUR' AND CHP4 > 2
    Selon que CHP3 et CP4 soit vide ou non

    En résumé, un genre de if avant chaque critère.

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Pourquoi ne pas construire dynamiquement votre requête et l'exécuter via EXEC_SQL ou EXECUTE IMMEDIATE ?

  3. #3
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Le EXECUTE IMMEDIATE, je vois pas trop à quoi ça pourrais servir puisque c'est du select...

    Par quel moyen restituer les données ? sqlplus ?

    Imaginons qu'on attende 2 paramètres 'OUI'/'NON' qui indiqueront si les critère 1 et 2 doivent être appliqués, une requête simple donnerait un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT CHP1,CHP2 FROM UNETABLE WHERE 
             (CHP3 = 'VALEUR' OR '&1' = 'NON')
       AND (CHP4 > 2 OR '&2' = 'NON')
    C'est la manière la plus simple, si on abuse de ce genre de chose sur des requêtes compliquées impliquant des grosses tables, il peut y avoir parfois quelques problèmes de perf, dans ce cas il faut envisager d'écrire une procédure stockée à laquelle on va passer un curseur en paramètre IN/OUT, ce curseur sera ouvert avec une requête choisie en fonction d'autres paramètres passés à la procédure.

  4. #4
    Membre confirmé

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Par défaut
    En fait le résultat de la requete sert à instancier un objet en java et les paramètres de cette requete sont aussi un objet.
    La requete en elle meme est un fichier properties.

    Je ne peux pas vraiement l'instancié dynamiquement. Je voudrais pouvoir rajouter simplement quelques ligne à la requete pour pouvoir faire ca.

    Merci

  5. #5
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut


    ??????

    là va faloir donner un exemple concret de ce que tu veux faire parceque c'est vraiment pas clair! (enfin pour moi en tout cas...)

  6. #6
    Membre confirmé

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Par défaut
    Salut

    Ma requete ne peut pas etre construite dans mon programme java, elle est déja créer dans un fichier texte. L'application se contente de lire la requete et d'ajouter les parametres.
    D'où la nécessité de tout faire le tri des parametres dans cette requête.

    Pourrais tu détaillé ce que fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (CHP3 = 'VALEUR' OR '&1' = 'NON')
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL server 7.0 requete select
    Par sangokus dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/03/2004, 11h09
  2. pbl delphi requete SELECT
    Par Rico l'abricot dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/02/2004, 09h15
  3. Requete select pour récupérer les no match entre 2 tables
    Par Celina dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/12/2003, 11h59
  4. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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