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

SQL Oracle Discussion :

Variable ou constante dans un script SQL


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 209
    Points : 73
    Points
    73
    Par défaut Variable ou constante dans un script SQL
    Bonjour
    En SQL dans SQLPLUS avec oracle 10
    Je désire
    1)Déclarer une constante CT qui serait Table.champ=1
    2)la réutiliser dans mon scripte SQL
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARATION DE LA CONSTANTE  CT =(Table.champ=1)
     
    SELECT
    TABLE.CHAMPS_2
    FROM TABLE
    WHERE @CT
    est-ce possible ?
    En vous remerciant par avance

  2. #2
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Hmmm, y'a d'apres moi une petite erreur de logique...

    Tu crées une CONSTANTE qui varie en fonction de ta ligne ?

    En fait, ce que je pense tu cherches à faire, c'est parametrer ta clause where, non ?


    En SQL, c'est pas faisable... en PLSQL, c'est déjà plus facile. En gros, tu vas parcourir ta table avec un curseur, et tu peux declarer une condition du genre : if colonne1 = 'toto' then variable = 1 else variable = 0

    et apres, dans ta requete, tu peux glisser dans ton where un truc du genre
    where variable = 1... mais dans ce cas, autant écrire directement where colonne1 = 'toto'


    Tu pourrais essayer de nous expliquer clairement ce que tu veux faire plutot que de passer par des exemples generaliste ? on t'expliquera alors comment t'en passer

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Tu peux utiliser une variable de substitution précédée par &

    exemple de requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from la_table t
    &A
    où la variable A comprend en entrée la chaine suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where t.le_champ='la_valeur'
    dans ce cas là tu peux réutiliser la requete en introduisant la clause where que tu veux.
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 209
    Points : 73
    Points
    73
    Par défaut
    Bonjour
    La piste me convient

    Donc si je comprend
    Je peux faire
    DEFINE A=' where t.le_champ=4 '

    PUIS
    SELECT * FROM TABLE T &A

    mais comment gérer la chaine de caractère d'un numérique ?
    DEFINE A=' where t.le_champ= 'la_valeur' <- ca ne passe pas
    D'avance merci

  5. #5
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    t'as essayé les doubles quotes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define A="where 'toto'='toto'";

  6. #6
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par bstevy Voir le message
    t'as essayé les doubles quotes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define A="where 'toto'='toto'";
    Sous quel environnement travailles tu?

    gold15, puisque tu veux mettre les requêtes dans SQLPLUS, tu n'as qu'à utiliser la méthode que je t'ai donné.

    Rappel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from la_table t
    &A
    A chaque exécution de la requete en question, il est demandé d'introduire une valeur. Dans ce cas,cette valeur est une clause WHERE

    exemple:
    Si chaine de caractères, à entrer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where t.champ_chaine='chaine_caractères'
    Si chaine de nombre, à entrer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where t.champ_nombre=456.366
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

Discussions similaires

  1. Prb de syntaxe avec une Variable dans un script SQL 2005
    Par davidso dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/03/2007, 18h14
  2. Réponses: 3
    Dernier message: 25/01/2007, 14h12
  3. variable non reconnue dans une requête sql
    Par sanatou dans le forum C++
    Réponses: 3
    Dernier message: 13/12/2006, 17h43
  4. Msg 2714 (objet deja existant) dans un script SQL Server
    Par Makrier dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/11/2006, 11h40
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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