Dan*_*Dan 13 sql-server-2008 null sql-server t-sql table-valued-parameters
我有一个存储过程 (SS2k8),其中包含一些有时为 null 或为空的表值参数。我已经看到这个StackOverflow 帖子说空/空 TVP 应该简单地从调用参数列表中省略。我的问题是我无法弄清楚如何在存储过程中检查空或空值,因为“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
...
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 18
表不能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
...
Run Code Online (Sandbox Code Playgroud)