Você pode alterar uma função com valor de tabela (TVF) no SQL Server usando o
ALTER FUNCTION
Sintaxe T-SQL. Você simplesmente segue
ALTER FUNCTION
com a nova definição. Basicamente é como usar CREATE FUNCTION
exceto que você substitui CREATE
com ALTER
. Exemplo
Segue um exemplo para demonstrar:
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 essa função ainda não existisse e eu a estivesse criando pela primeira vez, usaria o seguinte código:
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
É exatamente o mesmo, exceto que começa com
CREATE
em vez de ALTER
. Soltar e recriar
Outra maneira de fazer isso é descartar a função e criá-la novamente:
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
Nesse caso, usei a sintaxe DIE (Drop If Exists), o que significa que não receberei um erro se o objeto ainda não existir antes de tentar descartá-lo.
TVFs inline x TVFs de várias declarações
Os exemplos nesta página usam uma função com valor de tabela embutida. O mesmo conceito se aplica a TVFs de várias instruções.
Consulte Criar uma função com valor de tabela embutida e Criar uma função com valor de tabela de várias instruções para obter exemplos mais detalhados de cada uma.