Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modificare una funzione con valori di tabella in SQL Server

È possibile modificare una funzione con valori di tabella (TVF) in SQL Server utilizzando ALTER FUNCTION Sintassi T-SQL.

Segui semplicemente ALTER FUNCTION con la nuova definizione. Fondamentalmente è come usare CREATE FUNCTION tranne per la sostituzione di CREATE con ALTER .

Esempio

Ecco un esempio da dimostrare:

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

Se questa funzione non esistesse già e la stavo creando per la prima volta, userei il seguente codice:

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

È esattamente lo stesso, tranne che inizia con CREATE invece di ALTER .

Rilascia e ricrea

Un altro modo per farlo è eliminare la funzione e crearla di nuovo:

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 questo caso, ho usato la sintassi DIE (Drop If Exists), il che significa che non riceverò un errore se l'oggetto non esiste già prima di provare a rilasciarlo.

TVF in linea vs TVF a più dichiarazioni

Gli esempi in questa pagina utilizzano una funzione inline con valori di tabella. Lo stesso concetto si applica alle TVF con più dichiarazioni.

Vedere Creare una funzione con valori di tabella in linea e Creare una funzione con valori di tabella con più istruzioni per esempi più dettagliati di ciascuna di esse.