删除用户定义函数

您可以通过使用 SQL Server Management Studio 或 Transact-SQL 删除 SQL Server 2012 中的用户定义函数。

本主题内容

  • 开始之前:

    限制和局限

    安全性

  • 若要删除用户定义函数,请使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

限制和局限

  • 如果数据库中存在引用此函数的 Transact-SQL 函数或视图并且这些函数或视图通过使用 SCHEMABINDING 创建,或者存在引用该函数的计算列、CHECK 约束或 DEFAULT 约束,则您将无法删除该函数。

  • 如果存在引用此函数并且已生成索引的计算列,则您将无法删除该函数。

安全性

权限

需要具有对该函数所属架构的 ALTER 权限,或对该函数的 CONTROL 权限。

用于“返回首页”链接的箭头图标[Top]

使用 SQL Server Management Studio

删除用户定义函数

  1. 单击包含要修改的函数的数据库旁边的加号。

  2. 单击**“可编程性”**文件夹旁的加号。

  3. 单击包含要修改的函数的文件夹旁边的加号:

    • Table-valued Function

    • 标量值函数

    • 聚合函数

  4. 右键单击要删除的函数,然后选择**“删除”**。

  5. 在**“删除对象”对话框中,单击“确定”**。

    重要说明重要提示

    单击“删除对象”对话框中的“显示依赖关系”以打开“function_name 依赖关系”对话框。 这将显示依赖于该函数的所有对象和该函数依赖的所有对象。

用于“返回首页”链接的箭头图标[Top]

使用 Transact-SQL

删除用户定义函数

  1. 在**“对象资源管理器”**中,连接到数据库引擎实例。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。

    -- creates function called “Sales.ufn_SalesByStore”
    USE AdventureWorks2012;
    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 AdventureWorks2012;
    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
    

有关详细信息,请参阅 DROP FUNCTION (Transact-SQL)

用于“返回首页”链接的箭头图标[Top]