Ich frage mich, ob es möglich ist, eine benutzerdefinierte Funktion zu erstellen, die einen Parameter unterschiedlicher Länge (sowie andere Parameter) annehmen kann.SQL Server: benutzerdefinierte Funktionsparameter
Im Wesentlichen möchte ich einen Parameter übergeben, der dann in einer IN
Anweisung verwendet wird. Was würde Ich mag es, etwas zu tun, wie diese:
CREATE FUNCTION ufnGetOpenNotificationValue
(@LegacyTypeID INT,
@MonthEnd DATE,
@YearStart DATE,
@YearEnd DATE)
Wo @LegacyTypeID
ist eine Liste von ganzen Zahlen.
So dann die Funktion mit so etwas wie dieses
SELECT RE_Auxiliary.dbo.ufnGetOpenNotificationValue
((1,2,3),'2014-07-31','2013-09-01','2014-08-31')
statt
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')
aussehen könnte, aber wenn ich versuche, und mehrere ganze Zahlen passieren Ich erhalte eine Fehlermeldung,
Incorrect syntax near ','
* Tabelle Wertparameter * sind etwa so nah wie Sie bekommen können Z. B. [Übergeben Sie die Tabelle als Parameter an die SQL-Server-UDF] (http://stackoverflow.com/questions/1609115/pass-table-as-parameter-into-sql-server-udf) - Sie können variadic-Argumente nicht übergeben. –
Danke @Alex K. - Ich denke, ich würde bleiben, um die Funktion 3 mal aufrufen und summieren, wenn die Liste länger wäre ich könnte die Tabelle Methode vorgeschlagen haben – RickyTillson