ストアドプロシージャ(SS2k8)があり、テーブル値パラメーターがいくつかあり、それらがnullまたは空になる場合があります。このStackOverflowの投稿を見たところ、null /空のTVPは呼び出しパラメーターリストから単に削除する必要があると述べています。私の問題は、「IF(@tvp IS NULL)」がプロシージャの作成に失敗し、「スカラー変数「@tvpを宣言する必要があります」というメッセージが表示されるため、ストアドプロシージャ内の空またはnullを確認する方法を理解できないことです。TVPでSELECT COUNT(*)を実行してゼロを確認する必要がありますか?
コードの抜粋:
CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS
IF (@tvp IS NOT NULL) -- doesn't work
BEGIN
-- lots of expensive processing
END
ELSE
BEGIN
-- a little bit of cheap processing
END
...