Sql-Server
如何檢查 null 或空表值參數?
我有一個帶有幾個表值參數的儲存過程(SS2k8),這些參數有時為空或空。我已經看到這個StackOverflow 文章說應該從呼叫參數列表中簡單地省略空/空 TVP。我的問題是我無法弄清楚如何檢查儲存過程中的空或 null,因為“IF (@tvp IS NULL)”在創建過程時失敗,並顯示消息“必須聲明標量變數“@tvp”。我是否必須在 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 ...
桌子不能
NULL
,TVP 也不能。如何檢查表是否為空?你當然不會說IF Sales.SalesOrderHeader IS NULL
。:-)IF EXISTS (SELECT 1 FROM @tvp) BEGIN -- lots of expensive processing END ELSE BEGIN -- a little bit of cheap processing END ...
表值參數不會為空。把它當作一張桌子,@aaraon Bertrand 打敗了我。所以是的,檢查是否有行。