Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Modifier une fonction table dans SQL Server

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.