OVH Cloud OVH Cloud

questions sur le IN et le CASE

1 réponse
Avatar
daniel
salut chers DBA et developpeurs sql serveur

j'ai 02 questions pour vous et j'ai besoin de votre help

1)
si j'ai une requete de type

use pubs
go

select * from authors
where state in ('CA', 'TN')


est ce que je peux passé les valeurs de la conditions comme parametre
a une stored proc (sans construire la requete dynamiquement)

j'ai essayé des trucs comme


create proc dbo.prc_getauthors(@states varchar(50))
select * from authors
where state in (@states)
go

mais j'ai un incorrecte syntaxe et j'arrive pas a reformuler la requete

2) est ce que c'est possible de mettre un CASE dans le clause where
tel que

select *
from matable
where
CASE
WHEN ... THEN ...
ELSE ...
END

si oui ca me fait plaisir d'avoir un exemple

merci beaucoup

1 réponse

Avatar
VUILLERMET Jacques
Réponse à la question 2 :

Le WHERE attend une expression booléenne, le CASE renvoie une valeur sans
préjuger de son lieu d'utilisation.

Exemple :

select *
from employee
where case
when lname in ('Labrune', 'larsson') then 'SpecialEmployee'
else lname
end = 'SpecialEmployee'

Cette requête ne montre que la faisabilité technique, en pratique on aurait
fait plus simple pour faire la même chose !

Jacques.


"daniel" a écrit dans le message de news:

salut chers DBA et developpeurs sql serveur

j'ai 02 questions pour vous et j'ai besoin de votre help

1)
si j'ai une requete de type

use pubs
go

select * from authors
where state in ('CA', 'TN')


est ce que je peux passé les valeurs de la conditions comme parametre
a une stored proc (sans construire la requete dynamiquement)

j'ai essayé des trucs comme


create proc dbo.prc_getauthors(@states varchar(50))
select * from authors
where state in (@states)
go

mais j'ai un incorrecte syntaxe et j'arrive pas a reformuler la requete

2) est ce que c'est possible de mettre un CASE dans le clause where
tel que

select *
from matable
where
CASE
WHEN ... THEN ...
ELSE ...
END

si oui ca me fait plaisir d'avoir un exemple

merci beaucoup