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