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.