【发布时间】:2018-07-10 15:49:53
【问题描述】:
Coalesce() 内置函数接受任意数量的参数。
是否可以在 SQL Server 2012 中使用相同的语法编写一个用户定义的函数来执行此操作?我不想使用表格变量或逗号分隔列表。
我想实现一个 Coalesce() 函数,它返回传入的 LOWEST 非空元素,而不是传入的第一个非空元素。这是为了满足新的用户需求。 Coalesce() 不需要创建表变量,并且由于我正在用新逻辑替换现有的 Coalesce() 调用,因此我想编写我的新函数以使其行为方式相同,包括接受任意数量的元素。
我知道我可以在这里采取其他方法 - 我想尽量减少我必须做的重写。
【问题讨论】:
-
它的用途,特别是表变量参数。我会远离逗号分隔的列表,因为之后你只需要将它变成一个表格。但是表值参数是这里的最佳选择。但是,这可能是一个 XY 问题,您能告诉我们您要完成什么吗?
-
您可以创建一个带有可选参数和默认值的函数。 (带有可选参数的 SP 的示例是 here。)这与拥有不可预测数量的
sql_variant参数不同,但它可能很有用。 -
我已经更新了我最初的问题并提供了更多详细信息。
-
你能定义最低吗
-
就我而言,“最早日期”。但同样,这与问题的重点无关,即“可以像 Coalesce() 函数那样在 SQL Server 中编写一个接受任意数量参数的 UDF 吗?”
标签: sql-server tsql sql-server-2012 parameter-passing user-defined-functions