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] Sélectionner une ligne dans une SP


Sujet :

DB2

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 62
    Points
    62
    Par défaut [DB2] Sélectionner une ligne dans une SP
    Bonjour,

    dans une procédure stockée, j'ai la commande suivante :

    IF (SELECT MAG_ID FROM CSTAT WHERE MAG_ID = @MagID AND CAIS_ID = @CaisID AND CSTAT_ID = @CSTATID) IS NOT NULL THEN ....

    où @MagID, @CaisID et @CSTATID (type varchar tout les 3) sont passé en paramètres.
    Le problème c'est que cela renvoie toujours NULL alors que la ligne existe bien vu que si je lance la requête dans le centre de contrôle une ligne m'est renvoyée.
    De plus, ce n'est pas non plus un problème de troncature puisque chaque paramètre a exactement la même taille que la colonne correspondante dans la table.
    Donc je vois pas ou se situe le problème si quelqu'un peut m'aider.

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IF EXISTS (SELECT MAG_ID FROM CSTAT WHERE MAG_ID = @MagID AND CAIS_ID = @CaisID AND CSTAT_ID = @CSTATID) 
    THEN
    ...
    ELSE
    ...
    END
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    Bah j'ai deja essayé mais ca n'accepte pas la clause exists dans un if apparemment :

    34: [IBM][CLI Driver][DB2/NT] SQL0582N L'expression CASE dans la clause VALUES, GROUP BY ou ORDER BY et le prédicat IN ne doivent comporter ni prédicat quantifié, ni prédicat IN faisant appel à un FULLSELECT, ni prédicat EXISTS. LINE NUMBER=34. SQLSTATE=42625

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Correct ! le IF EXISTS n'est pas supporté par cette m... de DB2-UDB


    Faire alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [SQL à faire si vrai]
    WHERE EXISTS (SELECT MAG_ID FROM CSTAT WHERE MAG_ID = @MagID AND CAIS_ID = @CaisID AND CSTAT_ID = @CSTATID)
    ou avec des constructions à la SELECT CASE ELSE WHEN ELSE END
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    J'ai trouvé une solution assez simple qui marche:

    SELECT MAG_ID INTO @TEMP FROM CSTAT WHERE MAG_ID = @MagID AND CAIS_ID = @CaisID AND CSTAT_ID = @CSTATID;

    IF @TEMP IS NULL THEN .... ELSE .....

    En tout cas merci

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/10/2009, 13h31
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  4. [MySQL] inserer une ligne d'une table dans une autre table
    Par piero53 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/12/2008, 18h29
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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