共用方式為


刪除使用者定義的函式

適用於:SQL ServerAzure SQL Database

您可以使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中刪除 (卸除) 使用者定義的函式。

限制事項

  • 如果資料庫中有 Transact-SQL 函數或檢視參考這個函數,並且是利用 SCHEMABINDING 加以建立;或者如果有計算資料行、CHECK 條件約束或 DEFAULT 條件約束參考這個函數,就無法刪除函數。

  • 如果有計算資料行參考這個函數,而且已經產生索引,就無法刪除函數。

權限

需要函數所屬結構描述的 ALTER 權限,或函數的 CONTROL 權限。

使用 SQL Server Management Studio

  1. 選取包含要修改之函式的資料庫旁邊的加號。

  2. 選取 [可程式性] 資料夾旁的加號。

  3. 選取包含要修改之函式的資料夾旁邊的加號:

    • 資料表值函式
    • 純量值函式
    • 彙總函式
  4. 以滑鼠右鍵按一下您想刪除的函數,然後選取 [刪除]

  5. 在 [刪除物件] 對話方塊中,選取 [確定]。

    在 [刪除物件] 對話方塊中選取 [顯示相依性],開啟 function_name[相依性] 對話方塊。 這就會顯示相依於函數的所有物件以及函數所相依的所有物件。

使用 Transact-SQL

  1. 在物件總管中,連線至資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    下列程式碼範例會建立使用者定義的函式:

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

另請參閱