3

如何修复我的存储过程的这一部分?

选择将返回 1、0 或 null。如果选择返回 1 或 0,我希望将 @override 设置为该值。如果它返回 null,那么我希望将 @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))
4

3 回答 3

7
set @override = (coalesce((select override from groupPreferences g inner join
preferences p on g.preferenceId = p.preferenceId where groupId = 13
and description = 'myDescription'), 1))
于 2010-08-26T21:02:28.353 回答
6

我会选择这样可读的东西:

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)
于 2010-08-26T21:01:11.077 回答
0

得到了答案 - 我错过了一个 ( 在单词合并之后。

于 2010-08-26T21:00:42.747 回答