首页 > 解决方案 > 如何为用户定义的表类型设置函数的默认参数值?

问题描述

我有一个用户定义的表类型:

CREATE TYPE [dbo].[EntityKeysTable] AS TABLE
                  (
                    [EntityKey] [uniqueidentifier] NOT NULL,
                    PRIMARY KEY CLUSTERED( [EntityKey] ASC) WITH (IGNORE_DUP_KEY = OFF)
                  )

还有一个使用它的函数......但是这个函数正在被我们系统中的不同进程使用,我不想进入并且必须在任何地方处理新参数,所以我宁愿让它成为可选的里面的默认值...

ALTER FUNCTION [dbo].[fnMyFunctionNameHere]
    (@siteId UNIQUEIDENTIFIER, 
     @entityKeys AS EntityKeysTable READONLY, 
     @partialDeploy AS BIT = false) 
RETURNS TABLE 
AS
   RETURN (
      WITH Overrides AS (
        SELECT * ....

我这样做是为了 .@partialDeploy但不确定如何为@entityKeys.

标签: sql-server

解决方案


对于我之前的误导性信息,我深表歉意。

表值函数不能为空。但是您可以在其中不包含任何记录的情况下定义它们。因此,您将检查(select count(*) from @entityKeys) = 0是否有 entityKeys。

if (select count(*) from @entityKeys) = 0
   --load @entityKeys as your wish

推荐阅读