Eliminar funciones definidas por el usuario

Se aplica a:SQL ServerAzure SQL Database

Puede eliminar (quitar) funciones definidas por el usuario en SQL Server mediante SQL Server Management Studio o Transact-SQL.

Limitaciones y restricciones

  • No podrá eliminar la función si hay funciones o vistas de Transact-SQL en la base de datos que hacen referencia a esta función y se crearon mediante SCHEMABINDING o si hay columnas calculadas, restricciones CHECK o restricciones DEFAULT que hacen referencia a la función.

  • No podrá eliminar la función si hay columnas calculadas que hacen referencia a esta función y se han indexado.

Permisos

Requiere el permiso ALTER en el esquema al que pertenece la función o el permiso CONTROL en la función.

Use SQL Server Management Studio

  1. Seleccione el signo más junto a la base de datos que contiene la función que desea modificar.

  2. Seleccione el signo más junto a la carpeta Programabilidad.

  3. Seleccione el signo más junto a la carpeta que contiene la función que desea modificar:

    • Table-valued Function
    • Función con valor escalar
    • Función de agregado
  4. Haga clic con el botón derecho en la función que quiera eliminar y seleccione Eliminar.

  5. En el cuadro de diálogo Eliminar objeto, seleccione Aceptar.

    Seleccione Mostrar dependencias en el cuadro de diálogo Eliminar objeto para abrir el cuadro de diálogo Dependencias de function_name. De este modo, mostrará todos los objetos que dependen de la función y todos los objetos de los que la función depende.

Uso de Transact-SQL

  1. En Explorador de objetos, conéctese a una instancia del motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar.

    En el ejemplo de código siguiente se crea una función definida por el usuario:

    -- creates function called "Sales.ufn_SalesByStore"
    USE AdventureWorks2022;
    GO
    CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)
    RETURNS TABLE
    AS
    RETURN
    (
        SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'
        FROM Production.Product AS P
        JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
        JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
        JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID
        WHERE C.StoreID = @storeid
        GROUP BY P.ProductID, P.Name
    );
    GO
    

    En el ejemplo de código siguiente se elimina la función definida por el usuario creada en el ejemplo anterior.

    USE AdventureWorks2022;
    GO
    -- determines if function exists in database
    IF OBJECT_ID (N'Sales.fn_SalesByStore', N'IF') IS NOT NULL
    -- deletes function
        DROP FUNCTION Sales.fn_SalesByStore;
    GO
    

Consulte también