Freigeben über


Löschen benutzerdefinierter Funktionen

Gilt für:SQL ServerAzure SQL-Datenbank

Sie können benutzerdefinierte Funktionen in SQL Server löschen (ablegen), indem Sie SQL Server Management Studio oder Transact-SQL verwenden.

Beschränkungen und Einschränkungen

  • Sie können die Funktion nicht löschen, wenn Transact-SQL-Funktionen oder Ansichten in der Datenbank vorhanden sind, die auf diese Funktion verweisen und mithilfe von SCHEMABINDING erstellt wurden oder wenn berechnete Spalten, CHECK-Einschränkungen oder DEFAULT-Einschränkungen vorhanden sind, die auf die Funktion verweisen.

  • Sie können die Funktion nicht löschen, wenn berechnete Spalten vorhanden sind, die auf diese Funktion verweisen und indiziert wurden.

Berechtigungen

Erfordert die ALTER-Berechtigung im Schema, zu der die Funktion gehört, oder die CONTROL-Berechtigung für die Funktion.

Verwenden Sie SQL Server Management Studio

  1. Wählen Sie das Pluszeichen neben der Datenbank aus, das die Funktion enthält, die Sie ändern möchten.

  2. Wählen Sie das Pluszeichen neben dem Ordner "Programmierbarkeit " aus.

  3. Wählen Sie das Pluszeichen neben dem Ordner aus, der die Funktion enthält, die Sie ändern möchten:

    • Table-valued Function
    • Skalarwertfunktion
    • Aggregatfunktion
  4. Klicken Sie mit der rechten Maustaste auf die Funktion, die Sie löschen möchten, und klicken Sie dann auf Löschen.

  5. Wählen Sie im Dialogfeld "Objekt löschen" "OK" aus.

    Wählen Sie im Dialogfeld "Objekt löschen" die Option "Abhängigkeiten anzeigen" aus, um das Dialogfeld function_nameAbhängigkeiten zu öffnen. Es werden alle Objekte angezeigt, die von der Funktion abhängig sind, und alle Objekte, von denen die Funktion abhängig ist.

Verwenden von Transact-SQL

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz des Datenbankmoduls her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen.

    Im folgenden Codebeispiel wird eine benutzerdefinierte Funktion erstellt:

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

    Im folgenden Codebeispiel wird die benutzerdefinierte Funktion gelöscht, die im vorherigen Beispiel erstellt wurde.

    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
    

Siehe auch