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.