将空列表传递给标量函数上的用户定义的表类型参数

时间:2012-07-18 09:41:45

标签: sql-server-2008 user-defined-functions user-defined-types

所以我有这个用户定义的表类型参数,它在我的标量函数中使用,可能是空的。 我已经阅读了关于将空列表传递给存储过程中的表值参数的主题: Binding empty list or null value to table valued parameter on a stored procedure (.net)
基本上,正如其中一位回复者所说:

  

“诀窍是:根本不传递参数。默认值   表值参数的值是一个空表“

但是,当我在标量函数上尝试这个时,我收到一个错误:

  

为程序提供的参数数量不足或   功能

那么如何在标量函数上将空值传递给表值参数?

1 个答案:

答案 0 :(得分:2)

函数的参数不是可选的,因此您需要将兼容的TVP传递给函数。我不确定我是否理解采用TVP类型但不需要的标量值函数的意义 - 这个函数做了什么以及如何在没有TVP的情况下做到这一点?你确定这不是一个TVF吗?

无论如何,这里是你如何将空的TVP传递给标量函数:

DECLARE @x dbo.TVP_type_name;
SELECT dbo.function_name(@x);