Ich habe eine skalare Funktion, die eine Ganzzahl als eine ihrer Eingaben verwendet. Ich brauche eine Abfrage, die diese Funktion für den Satz von ganzen Zahlen (1,2,3,4,5)
ausführt. Das habe ich bisher gemacht:Wählen Sie fortlaufende Nummern als Zeilen, die als Eingaben für eine benutzerdefinierte Funktion dienen.
SELECT dbo.MyFunction('2016-05-13', Number)
FROM (SELECT TOP 5 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Number FROM SomeTable) AS T
Und das funktioniert. Gibt es eine Möglichkeit, dass ich es ohne die tun kann, da ich tatsächlich keine Informationen in der Tabelle verwenden?
Gibt es alternativ eine sauberere Möglichkeit, die gesamte Abfrage zu schreiben?
Es sollte angemerkt werden, dass Ihre aktuelle Abfrage nicht definiert ist. Wenn 'SomeTable' mehr als 5 Zeilen enthält, gab es * keine * Garantie, dass Sie tatsächlich 5 Zeilen mit den Zahlen 1-5 abrufen würden . –
Vielleicht wäre es ein besserer Ansatz, diesen Prozess zu überdenken. Anstatt eine Skalarfunktion zu verwenden (die fürchterlich ineffizient ist), könnten Sie dies als eine Inline-Tabellenwertfunktion, die eine Tally-Tabelle verwendet, überdenken. Es wäre schneller und flexibler als eine Skalarfunktion immer wieder aufzurufen. Wenn Sie den Inhalt Ihrer Funktion teilen können, werde ich etwas zusammenstellen, um dies zu demonstrieren. –
@SeanLange Leistung ist hier nicht wirklich ein Problem, ich muss nur einmal am Tag diese Werte in eine Tabelle ziehen. Danke trotzdem. – Dan