Sql-Server

如何檢查 null 或空表值參數?

  • March 2, 2022

我有一個帶有幾個表值參數的儲存過程(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 打敗了我。所以是的,檢查是否有行。

引用自:https://dba.stackexchange.com/questions/30754