这是我的存储过程中的一个部分:如何检查SQL Server中的表变量是否为空?
@dataInTable dbo.Table_Variable readonly,
....
AND (
(@dataInTable IS NULL)
OR
(item IN (SELECT T FROM @dataInTable))
)
@dataInTable IS NULL
是错误的语法,错误是
Must declare the scalar variable "@dataInTable"
所以我将其更改为:
(SELECT T FROM @dataInTable) IS NULL
该作品但是如果@dataInTable
有多个项目,我收到一个错误:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
可以理解,所以我将其更改为:
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
完美的作品,我有什么是性能问题。
我想知道,如果有一个更简单的方法来检查表变量是否是空的,就像
AND (
(@dataInTable IS EMPTY)
OR
(item IN (SELECT T FROM @dataInTable))
)
+1''EXISTS'可以比'COUNT'更有效率,因为它在第一行之后停止。 – 2012-01-05 18:31:13
谢谢,我试过存在,但它不能在选择条件内使用:AND( (我不能把这里存在) OR (项(选择T FROM @dataInTable)) )。你知道正确的语法 – 2012-01-05 18:44:37
@EricYin如果你想在'SELECT'中使用它,你可能正在寻找'CASE'。根据目前发布的片段很难知道自己在做什么。 – 2012-01-05 18:50:52