Ist es möglich, SQL Server-Funktionen zu überladen?


8

Ist es möglich, eine SQL Server-Funktion zu überlasten? Entweder ein Skalar wie ltrim oder eine Aggregatfunktion wie count?

Auch wenn dies eine wirklich, wirklich, schlechte Idee war. Ist es möglich?

Etwas von einem Duplikat der Überladung von benutzerdefinierten T-SQL-Funktionen? Ich würde sagen, es ist nicht 100% ein Duplikat, da dies für die Version 2005 war. Vielleicht hat sich das geändert?

Antworten:


10

Es gibt keine einfache Möglichkeit, eine in SQL Server integrierte Funktion per Carte-Blanche zu überschreiben.

Sie können Art von gefälschten es durch eine Funktion mit dem gleichen Namen in einem anderen Schema erstellen, dann die Funktion aufrufen mit dem Schemanamen , wie in:

SELECT dbo.COUNT(1)
FROM dbo.SomeTable st
GROUP BY st.SomeCol;

Dies führt jedoch mit größerer Wahrscheinlichkeit zu mehr Verwirrung als es wert ist.


5
Und wenn Sie den Code ändern müssen, um den Schemanamen trotzdem zu verwenden, können Sie ihn auch so ändern, dass er auf eine Benutzerfunktion mit einem anderen Namen verweist.
BradC

1
Stimmen Sie voll und ganz zu, @BradC - insgesamt ist es nur eine schlechte Idee, eine Überladung in SQL Server zu versuchen.
Max Vernon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.