2010-08-26 47 views
2

如何修復這部分存儲過程?設置一個變量,並選擇內部合併

select將返回1,0或null。如果select返回1或0,我希望@override被設置爲該值。如果它返回null,那麼我想@override被設置爲1.

我的語法有些問題;我被告知「附近的語法不正確」選擇「」和「附近的錯誤附加語」)「」。

這裏是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)) 

回答

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

得到了答案 - 我錯過了(這個詞後聚結

+2

非常像bodee的答案? – 2010-08-27 10:25:50

5

我會去像這樣的東西可讀:

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)