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.