Установка переменной с помощью select внутри coalesce - PullRequest
3 голосов
/ 27 августа 2010

Как мне исправить эту часть моей хранимой процедуры?

Выбор вернет 1, 0 или ноль.Если select возвращает 1 или 0, я хочу, чтобы @override был установлен на это значение.Если он возвращает ноль, то я хочу, чтобы @override был установлен в 1.

Что-то не так с моим синтаксисом;Мне говорят «неправильный синтаксис рядом с« select »» и «неправильный синтаксис рядом с«) ».

Вот 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))

Ответы [ 3 ]

7 голосов
/ 27 августа 2010
set @override = (coalesce((select override from groupPreferences g inner join
preferences p on g.preferenceId = p.preferenceId where groupId = 13
and description = 'myDescription'), 1))
5 голосов
/ 27 августа 2010

Я бы пошел на что-то читаемое, как это:

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)

Но вы можете сделать:

SELECT @override = ISNULL((select override 
from groupPreferences g 
    inner join preferences p on g.preferenceId = p.preferenceId 
where groupId = 13
    and description = 'myDescription'), 1)
0 голосов
/ 27 августа 2010

Получил ответ - мне не хватало (после слова coalesce.

...