Ta bort användardefinierade funktioner

Gäller för:SQL ServerAzure SQL DatabaseSQL-databas i Microsoft Fabric

Du kan ta bort användardefinierade funktioner i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

Begränsningar och restriktioner

  • Du kommer inte att kunna ta bort funktionen om det finns Transact-SQL funktioner eller vyer i databasen som refererar till den här funktionen och har skapats med hjälp av SCHEMABINDING, eller om det finns beräknade kolumner, CHECK-begränsningar eller STANDARDbegränsningar som refererar till funktionen.

  • Du kan inte ta bort funktionen om det finns beräknade kolumner som refererar till den här funktionen och har indexerats.

Behörigheter

Kräver ALTER-behörighet för det schema som funktionen tillhör, eller KONTROLL-behörighet för funktionen.

Använda SQL Server Management Studio

  1. Välj plustecknet bredvid databasen som innehåller den funktion som du vill ändra.

  2. Välj plustecknet bredvid mappen Programmability.

  3. Välj plustecknet bredvid mappen som innehåller den funktion som du vill ändra:

    • Tabellvärdesfunktion
    • Skalarvärdesfunktion
    • Aggregeringsfunktion
  4. Högerklicka på den funktion som du vill ta bort och välj Ta bort.

  5. I dialogrutan Ta bort objekt väljer du OK.

    Välj Visa beroenden i dialogrutan Ta bort objekt för att öppna dialogrutan function_nameBeroenden. Då visas alla objekt som är beroende av funktionen och alla objekt som funktionen är beroende av.

Använd Transact-SQL

  1. I Object Exploreransluter du till en instans av databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.

    Följande kodexempel skapar en användardefinierad funktion:

    -- 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
    

    Följande kodexempel tar bort den användardefinierade funktion som skapades i föregående exempel.

    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
    

Se även