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

DB2 Discussion :

DB2 - valeur d'un select dans une variable


Sujet :

DB2

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

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut DB2 - valeur d'un select dans une variable
    Bonjour,

    Je cherche à récupérer le résultat d'une requête "select" qui renvoi une seule valeur dans une variable mais je ne trouve pas la syntaxe qui va bien..

    Sous d'autres SGBD comme SQLServer par exemple, on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DECLARE @Compt INT;
    SELECT @Compt = MAX(COMPTEUR)  FROM TEMPSCOMPTEUR;
    Savez vous la syntaxe équivalente sous DB2 ?

    Merci pour votre aide !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set @Compt = (Select MAX(COMPTEUR)  FROM TEMPSCOMPTEUR);

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

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Merci pour votre réponse.
    Effectivement la syntaxe que vous m'avez indiqué fonctionne bien dans le cas d'une requête basique comme l'exemple que j'ai donné ..
    En fait j'ai donné un mauvais exemple ou plutôt je n'ai pas exposé mon problème complet ...
    En réalité, ma requête se compose de select imbriqués et table temporaire :

    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
     
    DECLARE COMPT INTEGER;
    DECLARE ANN INTEGER;
    SET ANN = 11;
     
       WITH
       TEMPSCOMPTEUR (ANNEE, COMPTEURMAX) AS
       (
        SELECT T1.ANNEE, MAX(T1.COMPTEUR) AS COMPTEURMAX  
        FROM (
        	SELECT  SUBSTR(CODE,8,2) AS ANNEE, SUBSTR(CODE,11,6) AS COMPTEUR     
    		FROM maTable WHERE CODE LIKE 'V%' 
    		) T1 GROUP BY T1.ANNEE
        ) 
    	SELECT COMPTEURMAX  FROM TEMPSCOMPTEUR WHERE ANNEE = ANN FETCH FIRST 1 ROW ONLY;
    Je cherche à récupérer le résultat dans une variable ..

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Bon j'ai réussi à implémenter cette syntaxe en modifiant ma requête pour la rapprocher au maximun d'une requête Select simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DECLARE Compt INTEGER;
    SET Compt = (SELECT MAX(COMPTEUR)  FROM TEMPSCOMPTEUR);
    Le problème que j'ai maintenant c'est que le format ne correspond pas :
    The data types of the operands for the operation "=" are not compatible.. SQLCODE=-401, SQLSTATE=42818
    J'ai essayé de modifié le type de Compt en VARCHAR mais sans succès ..

    Avez vous des idées ??

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Par défaut
    Finalement j'ai passé le type de ma variable en INTEGER et fais un cast dans le select ...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Euhhh, derrière ton SET tu peux avoir une CTE (avec un WITH), de mémoire ça ne pose aucun problème. La seule contrainte est le retour d'une seule ligne, sinon il faut déclarer un curseur.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/03/2009, 15h40
  2. Réponses: 9
    Dernier message: 27/05/2008, 13h44
  3. stokage de la valeur d'un select dans une variable .
    Par Halloula dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/01/2008, 11h46
  4. [formulaire] Récuperer la valeur d'un select dans une variable
    Par Despec dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/11/2006, 15h45
  5. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 14h28

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