OVH Cloud OVH Cloud

Requête clause WHERE variable

2 réponses
Avatar
Jean-Yves
Bonjour à tous ,

Dans une procédure stockée (SQL Server 7.0) avec un paramètre , je veux :
- lorsque le paramètre est null -> traitement des enregistrements sans
filtre du paramètre
- lorsque le paramètre est renseigné -> traitement des enregistrements
"filtrés" par le paramètre
- je ne veux pas utilisé exec(chaineSQL)

Je pense avoir trouvé une solution (voir ci-dessous) mais celà ne fonctionne
pas dans le cas
où mon paramètre est Null.Est-ce quelqu'un à une idée ?

Crete Procedure QryTest @Parametre nvarchar(15)=Null
AS
declare @Parametre nvarchar(15)
SELECT champ1,champ2
FROM Table1
where Champ1='Valeur'
AND Champ2=(CASE
WHEN Champ2 is Null then (Champ2)
ELSE @Parametre END)
.....
......

Merci d'avance

Jean-Yves

2 réponses

Avatar
Oliv'
Bonjour,

essaye

where champ1='valeur'
and 1= case when @Parametre is null then 1
when champ2 = @Parametre then 1
else 0 end
Oliv'

"Jean-Yves" <jeanyves.rancurel@(supprimerceci)vishay.com> a écrit dans le
message de news: Omyh%
Bonjour à tous ,

Dans une procédure stockée (SQL Server 7.0) avec un paramètre , je veux :
- lorsque le paramètre est null -> traitement des enregistrements sans
filtre du paramètre
- lorsque le paramètre est renseigné -> traitement des enregistrements
"filtrés" par le paramètre
- je ne veux pas utilisé exec(chaineSQL)

Je pense avoir trouvé une solution (voir ci-dessous) mais celà ne fonctionne
pas dans le cas
où mon paramètre est Null.Est-ce quelqu'un à une idée ?

Crete Procedure QryTest @Parametre nvarchar(15)=Null
AS
declare @Parametre nvarchar(15)
SELECT champ1,champ2
FROM Table1
where Champ1='Valeur'
AND Champ2=(CASE
WHEN Champ2 is Null then (Champ2)
ELSE @Parametre END)
.....
......

Merci d'avance

Jean-Yves
Avatar
Jean-Yves
Merci Oliv'

Ton code fonctionne et je viens de m'apercevoir que mon code fonctionne
aussi ,
j'ai du me mélanger les pinceaux ...

Jean-Yves

"Oliv'" <(supprimerceci) a écrit dans le
message de news:41bd5026$0$26027$
Bonjour,

essaye

where champ1='valeur'
and 1= case when @Parametre is null then 1
when champ2 = @Parametre then 1
else 0 end
Oliv'

"Jean-Yves" <jeanyves.rancurel@(supprimerceci)vishay.com> a écrit dans le
message de news: Omyh%
Bonjour à tous ,

Dans une procédure stockée (SQL Server 7.0) avec un paramètre , je veux :
- lorsque le paramètre est null -> traitement des enregistrements sans
filtre du paramètre
- lorsque le paramètre est renseigné -> traitement des enregistrements
"filtrés" par le paramètre
- je ne veux pas utilisé exec(chaineSQL)

Je pense avoir trouvé une solution (voir ci-dessous) mais celà ne


fonctionne
pas dans le cas
où mon paramètre est Null.Est-ce quelqu'un à une idée ?

Crete Procedure QryTest @Parametre nvarchar(15)=Null
AS
declare @Parametre nvarchar(15)
SELECT champ1,champ2
FROM Table1
where Champ1='Valeur'
AND Champ2=(CASE
WHEN Champ2 is Null then (Champ2)
ELSE @Parametre END)
.....
......

Merci d'avance

Jean-Yves