Freigeben über


Löschen von benutzerdefinierten Funktionen

Gilt für: SQL Server Azure SQL-Datenbank

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

Einschränkungen

  • Sie können die Funktion nicht löschen, wenn es in der Datenbank Transact-SQL-Funktionen oder -Anzeigen gibt, die auf diese Funktion verweisen und mit SCHEMABINDING erstellt wurden, oder wenn es berechnete Spalten, CHECK-Beschränkungen oder DEFAULT-Beschränkungen gibt, die auf diese 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 von SQL Server Management Studio

  1. Klicken Sie neben der Datenbank, die die Funktion enthält, die Sie ändern möchten, auf das Pluszeichen.

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

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

    • 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. Klicken Sie im Dialogfeld Objekt löschen auf OK.

    Wählen Sie Abhängigkeiten anzeigen in der Dialogbox Objekt löschen, um die Dialogbox function_name Abhä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 Datenbank-Engine-Instanz 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
    

Weitere Informationen