Vous pouvez modifier une fonction table (TVF) dans SQL Server à l'aide de ALTER FUNCTION Syntaxe T-SQL.
Vous suivez simplement ALTER FUNCTION avec la nouvelle définition. En gros, c'est comme utiliser CREATE FUNCTION sauf que vous remplacez CREATE avec ALTER .
Exemple
Voici un exemple pour illustrer :
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
Si cette fonction n'existait pas déjà et que je la créais pour la première fois, j'utiliserais le code suivant :
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
C'est exactement la même chose, sauf qu'il commence par CREATE au lieu de ALTER .
Déposer et recréer
Une autre façon de procéder consiste à supprimer la fonction et à la recréer :
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
Dans ce cas, j'ai utilisé la syntaxe DIE (Drop If Exists), ce qui signifie que je n'obtiendrai pas d'erreur si l'objet n'existe pas déjà avant d'essayer de le supprimer.
TVF en ligne vs TVF multi-instructions
Les exemples de cette page utilisent une fonction table en ligne. Le même concept s'applique aux TVF multi-instructions.
Voir Créer une fonction de table en ligne et Créer une fonction de table à plusieurs instructions pour des exemples plus détaillés de chacune.