これは、私のストアドプロシージャの1つのセクションです。
@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
複数のアイテムがある場合、エラーが発生します。
サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
理解できるので、次のように変更します。
(SELECT TOP(1) T FROM @ProgramRatings) IS NULL
完璧に動作します。私が持っているのはパフォーマンスの問題です。
テーブル変数が空かどうかを確認する簡単な方法があるかどうか疑問に思っています。
AND (
( @dataInTable IS EMPTY )
OR
( item IN ( SELECT T FROM @dataInTable ) )
)