Ich kenne nicht alle Feinheiten, die erforderlich sind, um eine Sprache als funktional zu qualifizieren, aber Sql Server hat eine sehr interessante Methode für die Arbeit mit Funktionen eingeführt. Eine spezielle Klausel ermöglicht die Interaktion von Funktionen in einer Abfrage. Es heißt Übernehmen. Als ich das einem ehemaligen APL-Programmierer erklärte, sagte er mir, dass es in APL eine ähnliche Klausel für ein ähnliches Ziel gibt. Mit der Apply-Klausel können Sie eine Reihe von Attributen aus einer Tabellenzeile oder einer Tabellenfunktionszeile als Eingabe an eine andere Funktion übergeben. Abgesehen davon habe ich eine Einschränkung für den Typ der zu schreibenden Tabellenfunktion auferlegt, um als funktionsfähig zu gelten. Das muss als inline deklariert werden, was bedeutet, dass es als einzelne select-Anweisung ausgedrückt wird. Dies setzt voraus, dass keine Variablen vorhanden sind. Solche Abfragen mit viel Logik können geschrieben werden, sofern Sie allgemeine Tabellenausdrücke verwenden, die es dann ermöglichen, Ausdrücke in Spalten umzuwandeln, eine Art nicht veränderbarer Variable, die in anderen CTE wiederverwendet werden kann. Am Ende wird die Funktion zu einem sehr großen Makro, das es dem Optimierer frei macht, die Art und Weise zu optimieren, wie es benötigt wird. Das einzige, was den Leuten fehlt, sind einige einfache Tricks, um bedingte Logik zu schreiben und einige datenunterstützende Logik in der Abfrage zu deklarieren. Zuletzt werden einige Funktionen, die die over-Klausel verwenden, benötigt, um die Ergebnisse als Wert weiterzugeben, der in einer Reihe von anderen Reihen verwendet werden kann, aber es wäre etwas lang, dies hier zu erläutern. Das einzige, was den Leuten fehlt, sind einige einfache Tricks, um bedingte Logik zu schreiben und einige Daten als unterstützende Logik in der Abfrage zu deklarieren. Zuletzt werden einige Funktionen, die die over-Klausel verwenden, benötigt, um die Ergebnisse als Wert weiterzugeben, der in einer Reihe von anderen Reihen verwendet werden kann, aber es wäre etwas lang, dies hier zu erläutern. Das einzige, was den Leuten fehlt, sind einige einfache Tricks, um bedingte Logik zu schreiben und einige Daten als unterstützende Logik in der Abfrage zu deklarieren. Zuletzt werden einige Funktionen, die die over-Klausel verwenden, benötigt, um die Ergebnisse als Wert weiterzugeben, der in einer Reihe von anderen Reihen verwendet werden kann, aber es wäre etwas lang, dies hier zu erläutern.