È 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.