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
Klicken Sie neben der Datenbank, die die Funktion enthält, die Sie ändern möchten, auf das Pluszeichen.
Wählen Sie neben dem Ordner Programmierbarkeit das Pluszeichen.
Klicken Sie neben dem Ordner, der die Funktion enthält, die Sie ändern möchten, auf das Pluszeichen:
- Table-valued Function
- Skalarwertfunktion
- Aggregatfunktion
Klicken Sie mit der rechten Maustaste auf die Funktion, die Sie löschen möchten, und klicken Sie dann auf Löschen.
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
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
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