刪除使用者定義的函式
適用於: SQL Server Azure SQL 資料庫
您可以使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中刪除 (卸除) 使用者定義的函式。
限制事項
如果資料庫中有 Transact-SQL 函數或檢視參考這個函數,並且是利用 SCHEMABINDING 加以建立;或者如果有計算資料行、CHECK 條件約束或 DEFAULT 條件約束參考這個函數,就無法刪除函數。
如果有計算資料行參考這個函數,而且已經產生索引,就無法刪除函數。
權限
需要函數所屬結構描述的 ALTER 權限,或函數的 CONTROL 權限。
使用 SQL Server Management Studio
選取包含要修改之函式的資料庫旁邊的加號。
選取 [可程式性] 資料夾旁的加號。
選取包含要修改之函式的資料夾旁邊的加號:
- 資料表值函式
- 純量值函式
- 彙總函式
以滑鼠右鍵按一下您想刪除的函數,然後選取 [刪除]。
在 [刪除物件] 對話方塊中,選取 [確定]。
在 [刪除物件] 對話方塊中選取 [顯示相依性],開啟 [function_name][相依性] 對話方塊。 這就會顯示相依於函數的所有物件以及函數所相依的所有物件。
使用 Transact-SQL
在物件總管中,連線至資料庫引擎的執行個體。
在標準列上,選取 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。
下列程式碼範例會建立使用者定義的函式:
-- 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
下列程式碼範例會刪除在上一個範例中建立的使用者定義函式。
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