Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alterar uma função com valor de tabela no SQL Server


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.