这是我的一个存储过程的一部分:
@dataInTable dbo.Table_Variable readonly,
....
AND (
( @dataInTable IS NULL )
OR
( item IN ( SELECT T FROM @dataInTable ) )
)
@dataInTable IS NULL
语法错误,错误是
必须声明标量变量“@dataInTable”
所以我把它改成:
(SELECT T FROM @dataInTable) IS NULL
这可行,但如果@dataInTable
有超过 1 个项目,我会收到错误消息:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
可以理解,所以我将其更改为:
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
完美运行,我所拥有的是性能问题。
我想知道,是否有更简单的方法来检查表变量是否为空,例如
AND (
( @dataInTable IS EMPTY )
OR
( item IN ( SELECT T FROM @dataInTable ) )
)