Sie können eine Tabellenwertfunktion (TVF) in SQL Server mithilfe von ALTER FUNCTION
ändern T-SQL-Syntax.
Folgen Sie einfach ALTER FUNCTION
mit der neuen Definition. Im Grunde ist es wie die Verwendung von CREATE FUNCTION
außer Sie ersetzen CREATE
mit ALTER
.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
ALTER FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName = @CatName ); GO
Wenn diese Funktion noch nicht vorhanden wäre und ich sie zum ersten Mal erstellen würde, würde ich den folgenden Code verwenden:
CREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName = @CatName ); GO
Es ist genau dasselbe, außer dass es mit CREATE
beginnt statt ALTER
.
Drop and Recreate
Eine andere Möglichkeit besteht darin, die Funktion zu löschen und neu zu erstellen:
DROP FUNCTION IF EXISTS udf_CatsByName_ITVF; GO CREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) ) RETURNS TABLE WITH SCHEMABINDING AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats WHERE CatName = @CatName ); GO
In diesem Fall habe ich die DIE-Syntax (Drop If Exists) verwendet, was bedeutet, dass ich keine Fehlermeldung erhalte, wenn das Objekt nicht bereits existiert, bevor ich versuche, es zu löschen.
Inline-TVFs vs. TVFs mit mehreren Anweisungen
Die Beispiele auf dieser Seite verwenden eine Inline-Tabellenwertfunktion. Dasselbe Konzept gilt für TVFs mit mehreren Anweisungen.
Siehe Erstellen einer Inline-Tabellenwertfunktion und Erstellen einer Multi-Statement-Tabellenwertfunktion für detailliertere Beispiele für jede dieser Funktionen.