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

  1. #1
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : juillet 2013
    Messages : 3
    Points : 3
    Points
    3

    Par défaut Comment utiliser une variable dans la clause select ?

    Bonjour,
    Comment utiliser une variable dans la clause select
    Je voudrais pouvoir faire la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tabLe1 (champ1,champ2) SELECT champ, variable FROM table2;
    mais cette requete échoue en DB2 a cause de la variable

    J'ai testé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 1 FROM SYSIBM.SYSDUMMY1;
    qui fonctionne avec une valeur

    Mais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE XX INTEGER;             
    SET XX=1;                       
    SELECT XX FROM SYSIBM.SYSDUMMY1;
    Échoue à la ligne 3


    Comment faire pour utiliser une variable dans le select en DB2

    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    novembre 2012
    Messages
    1 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 205
    Points : 8 090
    Points
    8 090

    Par défaut

    Bonjour, tu es dans quel langage (et environnement d'exécution) ? Tu essaies de faire une procédure stockée SQL ?
    Par exemple en COBOL il faut mettre ":" devant ta variable (dans une instruction EXEC SQL).
    As-tu essayé de créer une table temporaire plutôt que l'instruction select (qui nécessite une sortie pour être utilisée) ?
    Si tu fais SET XX = (SELECT 1 FROM SYSIBM.SYSDUMMY1) as-tu toujours l'erreur ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : juillet 2013
    Messages : 3
    Points : 3
    Points
    3

    Par défaut

    En fait j'essaye de créer une procédure stockée dans laquelle plusieurs enregistrement sont ajoutés a une table par une requête INSERT .... SELECT , qui reprend plusieurs champs de la table source ainsi que la valeur d'une variable préalablement initialisée).
    Mais apparemment la partie select ne fonctionne déjà pas

    De façon simplifiée, j'ai une table DOC comme suit
    Key, DOSSIER, CLIENT
    1, ASD125, DUPONT
    2, ZDE456, BINET

    et une table ARCHIVE comme suit
    Key, DOSSIER, DATE

    Je veux faire ceci:

    DECLARE ARCHIVAGE DATE;
    SET ARCHIVAGE = "2018-12-14";
    INSERT INTO ARCHIVE (DOSSIER, DATE) SELECT DOSSIER, ARCHIVAGE FROM DOC WHERE CLIENT='DUPONT';

    En fait le problème viens de la variable ARCHIVAGE , le message suivant est affiché

    Query execution failed

    Reason:
    SQL Error [42601]: An unexpected token "DOC" was found following "". Expected tokens may include: "

    SELECT SOSSIER, ARCHIVAGE FROM".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.19.26

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Lemosi Fort et Vert
    Inscrit en
    mars 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lemosi Fort et Vert
    Secteur : Finance

    Informations forums :
    Inscription : mars 2016
    Messages : 8
    Points : 34
    Points
    34

    Par défaut

    Bonjour,

    si je comprends bien une des valeurs est une variable locale l'autre une donnée issue d'une table. Personnellement j'aurais essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO ARCHIVE (DOSSIER, DATE) 
     VALUES (
      (SELECT DOSSIER FROM DOC WHERE CLIENT='DUPONT'),
       ARCHIVAGE
                 );
    @+

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    novembre 2012
    Messages
    1 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 205
    Points : 8 090
    Points
    8 090

    Par défaut

    Citation Envoyé par jhoubart Voir le message
    En fait j'essaye de créer une procédure stockée dans laquelle plusieurs enregistrement sont ajoutés a une table par une requête INSERT .... SELECT , qui reprend plusieurs champs de la table source ainsi que la valeur d'une variable préalablement initialisée).
    Mais apparemment la partie select ne fonctionne déjà pas

    De façon simplifiée, j'ai une table DOC comme suit
    Key, DOSSIER, CLIENT
    1, ASD125, DUPONT
    2, ZDE456, BINET

    et une table ARCHIVE comme suit
    Key, DOSSIER, DATE

    Je veux faire ceci:

    DECLARE ARCHIVAGE DATE;
    SET ARCHIVAGE = "2018-12-14";
    INSERT INTO ARCHIVE (DOSSIER, DATE) SELECT DOSSIER, ARCHIVAGE FROM DOC WHERE CLIENT='DUPONT';

    En fait le problème viens de la variable ARCHIVAGE , le message suivant est affiché
    Peut être que l'erreur vient des doubles "quote" sur l'instruction set ?

Discussions similaires

  1. comment utiliser une variable dans ce type d'écriture [A5:M&"j"]
    Par nouveauvba dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/04/2017, 17h28
  2. Réponses: 4
    Dernier message: 25/03/2015, 01h12
  3. comment utiliser une variable dans MySQL
    Par lecaire dans le forum Débuter
    Réponses: 6
    Dernier message: 17/08/2009, 23h57
  4. Réponses: 2
    Dernier message: 22/08/2006, 12h28
  5. Réponses: 5
    Dernier message: 04/05/2006, 22h02

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