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 :

Un champ de table contient une condition SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut Un champ de table contient une condition SQL
    Bonjour,

    J'ai une table qui contient un champ que nous appellerons my_condition de type varchar2 et qui est prévu pour contenir une condition SQL, par exemple Montant > 100.
    Je souhaiterais tester cette condition dans un If, j'ai donc fait :
    If my_condition then
    et j'ai eu une erreur de compilation car le champ my_condition est de type varchar2 et non de type boolean. Donc, je cherche un moyen de faire comprendre au compilateur que my_condition est une condition SQL. Savez-vous comment faire s'il vous plait ?

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Une condition SQL ??
    C'est à dire !

    Tu peux donner un exemple ?

    Quoiqu'il en soit, si tu veux vérifier ta "condition" il faut l'exécuter

  3. #3
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    De plus il nous faudrait ton code, histoire d'y voir plus clair.

  4. #4
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    J'ai déjà donné un exemple !
    J'ai une table qui s'appelle my_table
    Cette table a une colonne qui s'appelle my_condition
    Cette colonne a comme valeur une condition qui me servira à exécuter une requête SQL dans mon code. Au lieu d'écrire la condition directement dans le code comme on fait d'habitude, je récupère cette condition à partir de ma table, parce qu'elle peut varier.
    La condition peut être par exemple X > 0. Donc au lieu d'écrire dans mon programme If X > 0 then , je veux écrire If my_condition then
    mais ça ne passe pas pour les raisons que j'ai évoquées dans mon 1er post.

  5. #5
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par lola06 Voir le message
    De plus il nous faudrait ton code, histoire d'y voir plus clair.
    Cela nous permettras de voir notamment la déclaration des variables, ...

  6. #6
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    lola06 : relisez-moi SVP.

    Est-ce que quelqu'un d'autre sur ce forum aurait la réponse SVP ?

    Merci.

  7. #7
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par Samanta Voir le message
    lola06 : relisez-moi SVP.

    Est-ce que quelqu'un d'autre sur ce forum aurait la réponse SVP ?

    Merci.
    Il faudrait un exemple de code, parce que votre exemple est particulièrement confus et mélange ce qui se passe dans la requête et ce qui se passe dans le procédural.

    Personnellement je vois deux possibilités :

    1. Vous avez du code procédural qui va récupérer sur la BDD une chaîne à traiter comme un test, et vous devez l'exécuter dans le procédural. Dans ce cas, le problème est purement procédural, et s'il s'agit de PL/SQL un simple EXECUTE IMMEDIATE 'SELECT ' || test || 'FROM DUAL' INTO MonBooleen peut vous tirer d'affaire.

    2. Vous souhaitez que la condition exprimée dans la colonne en texte s'applique au sein même de la requête. À ma connaissance c'est impossible directement ; en passant par une conception Objet en BDD on pourrait certainement s'en tirer, mais je doute que ça soit intéressant au niveau performance, et une modélisation normale appropriée (donc pas une chaîne de caractère) devrait permettre de s'en tirer.

  8. #8
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par Samanta Voir le message
    lola06 : relisez-moi SVP.

    Est-ce que quelqu'un d'autre sur ce forum aurait la réponse SVP ?

    Merci.
    Je t'ai bien lu rassure toi.

    Ce que je te demandais c'est le reste de ton code, parce que ce que tu me dis ne me montres pas comment tu récupères les infos dans ta table ni sous quel format !

  9. #9
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Ce que tu fais actuellement donc, c'est récupérer une chaine de caractères dans une colonne (X > 0) et la coller dans un IF donc ça nous donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IF ('X > 0') THEN ..
    Mais à quoi correspond X ?
    Il faut le mapper avec une constante, une variable, une colonne ?


    Tu peux essayer l'exécution d'une requête générique telle que celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT count(*) AS Result 
    FROM dual
    WHERE 1=1;
    Où "1=1" est ta condition

    Si tu as 0 la condition n'est pas vérifiée sinon elle l'est.

  10. #10
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Billets dans le blog
    1
    Par défaut
    Dans ton cas il faut faire du sql dynamique.

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

Discussions similaires

  1. concatenetion de 03 champ dans une condition sql
    Par samdou dans le forum Langage SQL
    Réponses: 0
    Dernier message: 14/06/2009, 00h51
  2. verifier si une table contient une colonne
    Par da_latifa dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/07/2006, 15h19
  3. extraire une table d'une base sql server 2000
    Par MAJIK_ENIS dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/04/2006, 22h13
  4. Réponses: 6
    Dernier message: 05/04/2006, 11h12
  5. Réponses: 8
    Dernier message: 20/06/2005, 15h10

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