【发布时间】:2012-02-03 13:53:18
【问题描述】:
这是我的一个存储过程的一部分:
@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 ) )
)
【问题讨论】:
标签: sql-server tsql null table-variable