2010-08-26 28 views
2

Comment réparer cette partie de ma procédure stockée?Définition d'une variable avec select inside coalesce

La sélection renvoie 1, 0 ou null. Si la sélection renvoie 1 ou 0, je souhaite que @override soit défini sur cette valeur. Si elle renvoie null, alors je veux que @override soit mis à 1.

Quelque chose ne va pas avec ma syntaxe; On me dit "syntaxe incorrecte près de 'select'" et "syntaxe incorrecte près de ')'".

Voici le sql.

set @override = (coalesce(select override from groupPreferences g inner join 
preferences p on g.preferenceId = p.preferenceId where groupId = 13 
and description = 'myDescription'), 1)) 

Répondre

6
set @override = (coalesce((select override from groupPreferences g inner join 
preferences p on g.preferenceId = p.preferenceId where groupId = 13 
and description = 'myDescription'), 1)) 
0

Got the réponse- que je manquais un (après le mot soudent

+2

À peu près comme la réponse de Bodee? –

5

je vais quelque chose facile à lire comme ceci:

select @override = override 
from groupPreferences g 
    inner join preferences p on g.preferenceId = p.preferenceId 
where groupId = 13 
    and description = 'myDescription' 

SET @override = ISNULL(@override, 1) 

Mais vous pouvez faire:

SELECT @override = ISNULL((select override 
from groupPreferences g 
    inner join preferences p on g.preferenceId = p.preferenceId 
where groupId = 13 
    and description = 'myDescription'), 1)