sql >> Base de Datos >  >> RDS >> Sqlserver

Modificar una función con valores de tabla en SQL Server

Puede modificar una función con valores de tabla (TVF) en SQL Server utilizando ALTER FUNCTION Sintaxis T-SQL.

Simplemente sigue ALTER FUNCTION con la nueva definición. Básicamente es como usar CREATE FUNCTION excepto que reemplazas CREATE con ALTER .

Ejemplo

Aquí hay un ejemplo para demostrarlo:

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

Si esta función aún no existiera y la estuviera creando por primera vez, usaría el siguiente 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

Es exactamente igual, excepto que comienza con CREATE en lugar de ALTER .

Soltar y recrear

Otra forma de hacerlo es soltar la función y crearla de nuevo:

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

En este caso, utilicé la sintaxis DIE (Drop If Exists), lo que significa que no obtendré un error si el objeto aún no existe antes de intentar eliminarlo.

TVF en línea frente a TVF de múltiples declaraciones

Los ejemplos en esta página usan una función con valores de tabla en línea. El mismo concepto se aplica a los TVF de declaraciones múltiples.

Consulte Crear una función con valores de tabla en línea y Crear una función con valores de tabla de instrucciones múltiples para obtener ejemplos más detallados de cada una.