OVH Cloud OVH Cloud

requete avec parametre null

3 réponses
Avatar
herve
Bonjour,

J'ai crée cette procédure stockée:
(
@nivGestConnect tinyint,
@IdSystDiffus tinyint=Null
)
AS
SET NOCOUNT ON;
SELECT DISTINCT Ville
FROM Adresses
INNER JOIN Adr_id_syst_diffus ON Adresses.Id_adr = Adr_id_syst_diffus.Id_adr
WHERE (Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null)
AND Adresses.Niveau_affic_gest<=@nivGestConnect AND
Adresses.Niveau_affic_auteur<=@nivGestConnect
ORDER BY Ville;

Si je passe un chiffre à @IdSystDiffus pas de problème, j'ai bien une
sélection d'enregistrements.
par contre quand je passe Null, je voudrai avoir toutes les lignes.
Pourtant il me semble bien que la première ligne
(Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null) est vrai!
A noter que tous la colonne Id_syst_diffus ne comporte pas de champ "Null"

a+
herve

3 réponses

Avatar
bruno reiter [MVP]
remplaces @IdSystDiffus=Null
par @IdSystDiffus is Null

NULL n'est pas une valeur mais un état

br

"herve" wrote in message
news:
Bonjour,

J'ai crée cette procédure stockée:
(
@nivGestConnect tinyint,
@IdSystDiffus tinyint=Null
)
AS
SET NOCOUNT ON;
SELECT DISTINCT Ville
FROM Adresses
INNER JOIN Adr_id_syst_diffus ON Adresses.Id_adr = Adr_id_syst_diffus.Id_adr
WHERE (Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null)
AND Adresses.Niveau_affic_gest<=@nivGestConnect AND
Adresses.Niveau_affic_auteur<=@nivGestConnect
ORDER BY Ville;

Si je passe un chiffre à @IdSystDiffus pas de problème, j'ai bien une
sélection d'enregistrements.
par contre quand je passe Null, je voudrai avoir toutes les lignes.
Pourtant il me semble bien que la première ligne
(Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null) est vrai!
A noter que tous la colonne Id_syst_diffus ne comporte pas de champ "Null"

a+
herve



Avatar
Laurent Moreau
Il faut mettre:

@IdSystDiffus IS Null
à la place de:
@IdSystDiffus=Null

Laurent.



"herve" wrote in message
news:
Bonjour,

J'ai crée cette procédure stockée:
(
@nivGestConnect tinyint,
@IdSystDiffus tinyint=Null
)
AS
SET NOCOUNT ON;
SELECT DISTINCT Ville
FROM Adresses
INNER JOIN Adr_id_syst_diffus ON Adresses.Id_adr Adr_id_syst_diffus.Id_adr
WHERE (Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null)
AND Adresses.Niveau_affic_gest<=@nivGestConnect AND
Adresses.Niveau_affic_auteur<=@nivGestConnect
ORDER BY Ville;

Si je passe un chiffre à @IdSystDiffus pas de problème, j'ai bien une
sélection d'enregistrements.
par contre quand je passe Null, je voudrai avoir toutes les lignes.
Pourtant il me semble bien que la première ligne
(Adr_id_syst_diffus.Id_syst_diffus = @IdSystDiffus OR
@IdSystDiffus=Null) est vrai!
A noter que tous la colonne Id_syst_diffus ne comporte pas de champ "Null"

a+
herve



Avatar
herve
Merci à Bruno et laurent.
Bonne années à tout le monde
herve