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

Développement SQL Server Discussion :

Requete sur valeur NULL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut Requete sur valeur NULL
    Bonjour,

    Je vous expose mon problème

    J'ai une table tableOF dans laquelle je récupère plusieurs champs.
    OFnom, OFforme et OFtype.

    J'ai une deuxieme table tableDESC (que j'ai créer et que je remplis moi même) où je dois ressortir une description en fonction de mes 3 champs.

    Dans ma procédure stockée j'ai :

    <code>
    CREATE PROCEDURE SP_DESC
    @Ligne int,
    @Result nvarchar(255) OUTPUT
    AS
    DECLARE @VAL_OFnom varchar(255)
    DECLARE @VAL_OFforme varchar(255)
    DECLARE @VAL_OFtype varchar(255)
    DECLARE @VAL_DESC varchar(255)

    /--- récuperation des champs, les valeurs ne sont pas nuille ---/
    Select @VAL_OFnom = OFnom, @VAL_OFforme = OFforme, @VAL_OFtype = OFtype From tableOF where NumLigne = @Ligne

    /---comparaison des champs (*les champs peuvent être null)
    Select @VAL_DESC = Description From tableDESC where OFnom = @VAL_OFnom and OFforme = @VAL_OFforme and OFtype = @VAL_OFtype

    Select @Result = @VAL_DESC

    IF @@ERROR <> 0
    BEGIN
    Select @Result = 'Error'
    End
    GO
    </code>

    Ce code fonctionne bien si dans ma tableDESC les 3 champs sont renseignés.

    Cependant, si j'ai un des champ en null(*) dans tableDESC, alors la requete ne renvoie rien.

    Je voudrai savoir s'il est possible de contourner ceci.

    Car je voudrais ne créer qu'une procédure pour afficher la description.

    Merci d'avance de vos réponse.

    LyLy

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Par défaut
    Il faudrait peut être utiliser la fonction ISNULL.

    http://msdn2.microsoft.com/en-us/lib...0(sql.80).aspx

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut
    Merci, je pense que ça va marcher, je verrai lundi.
    Je vous dirais.

    LyLy

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut
    Bonjour,

    Quelqu'un pourrait-il m'aider à placer la fonction ISNULL dans mon where?

    Parce que j'ai regardé pour cette fonction, il faut mettre une valeur de remplacement si c'est nulle, et moi ce que je cherche à faire, cest si dans ma requete il trouve une valeur nulle, il s'en occupe pas et il me renvoie quand même un résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select @VAL_DESC = Description From tableDESC where OFnom = @VAL_OFnom and OFforme = @VAL_OFforme and OFtype = @VAL_OFtype
    Un ex pour mieux me faire comprendre,

    tableOF
    OFnom | OFforme | OFtype
    ABRA | CARRE | BLEU
    RHOD | CERCLE | VERT

    tableDESC
    OFnom | OFforme | OFtype | Description
    ABRA | CARRE | BLEU | carre bleu
    RHOD | CERCLE | <NULL> | tous les cercles

    Donc suivant ma procédure,
    pour ABRA, elle va me renvoyer la description "carre bleu"
    mais pour RHOD, elle me renverra rien.
    Et moi je voudrai que quand elle compare l'OFtype VERT à <null>, comme c'est null, elle passe à côté et me renvoie la description "tous les cercles"

    Est ce possible?

    Merci d'avance.
    Lyly

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Il faut juste que tu réadapte tes clauses where.

    Essaie de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT @VAL_DESC = Description FROM tableDESC WHERE (OFnom = @VAL_OFnom AND OFforme = @VAL_OFforme) OR OFtype = @VAL_OFtype
    En espérant que cela t'aide.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Par défaut
    Merci,

    cela fonctionne bien avec les enregistrements de l'ex, mais si j'ai un enregistrement tel que :

    tableDESC
    OFnom | OFforme | OFtype | Description
    RHOD | <NULL> | VERT | tous verts

    la requete ne fonctionne plus.

    Et de plus je n'ai pas préciser mais je n'ai pas que 3 champs à comparer mais pour certains j'en ai 6.

    Mon but était de créer une seule procédure "générique" pour afficher la description en fonction de mes 6 champs, sachant que les 6 champs ne sont pas forcément renseigner (<NULL>).

    Mais est ce réellement possible?

    Je précise également que la description est un champ dynamique sur une étiquette dans amétis.

    LyLy

Discussions similaires

  1. Requete sur valeur NULL
    Par LyLy_91 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/10/2007, 16h48
  2. Réponses: 2
    Dernier message: 02/06/2007, 12h06
  3. Somme de requete avec valeur NULL
    Par maxeur dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/04/2007, 10h19
  4. pb de requete avec valeurs null
    Par popopate dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/08/2006, 21h22
  5. Pb requete avec valeurs nulles
    Par James85 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/04/2004, 10h20

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