【发布时间】:2016-11-25 05:01:33
【问题描述】:
我想知道是否可以创建一个用户定义的函数,该函数可以采用不同长度的参数(以及其他参数)。
本质上,我想传递一个参数,然后在IN 语句中使用该参数。我想做的是这样的:
CREATE FUNCTION ufnGetOpenNotificationValue
(@LegacyTypeID INT,
@MonthEnd DATE,
@YearStart DATE,
@YearEnd DATE)
@LegacyTypeID 是一个整数列表。
那么使用函数可能看起来像这样
SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
((1,2,3),'2014-07-31','2013-09-01','2014-08-31')
而不是
SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
(1,'2014-07-31','2013-09-01','2014-08-31') +
RE_Auxiliary.dbo.ufnGetOpenNotificationValue
(2,'2014-07-31','2013-09-01','2014-08-31') +
RE_Auxiliary.dbo.ufnGetOpenNotificationValue
(3,'2014-07-31','2013-09-01','2014-08-31')
但如果我尝试传递多个整数,我会收到错误提示
Incorrect syntax near ','
【问题讨论】:
-
表值参数 与你能得到的一样接近,例如Pass table as parameter into sql server UDF - 你不能传递可变参数。
-
感谢@Alex K. - 我想我会坚持调用该函数 3 次并将它们相加,如果列表更长,我可能会考虑您提出的表格方法
标签: sql sql-server tsql user-defined-functions sqldatatypes