Tsql SQL Server 2012-无法删除用户定义的函数

Tsql SQL Server 2012-无法删除用户定义的函数,tsql,sql-server-2012,Tsql,Sql Server 2012,以下语法成功创建了用户定义的函数,但没有删除它。谁能确定我的错误在哪里 --示例1-标量函数 USE AdventureWorks2012 GO CREATE FUNCTION Sales.uf_MostRecentCustomerOrderDate (@CustomerID int) RETURNS DATETIME AS BEGIN; DECLARE @MostRecentOrderDate datetime; SELECT @MostRecentOrderDate

以下语法成功创建了用户定义的函数,但没有删除它。谁能确定我的错误在哪里

--示例1-标量函数

USE AdventureWorks2012
GO

CREATE FUNCTION Sales.uf_MostRecentCustomerOrderDate (@CustomerID int)
RETURNS
   DATETIME
AS
BEGIN;
    DECLARE @MostRecentOrderDate datetime;

    SELECT @MostRecentOrderDate = MAX(OrderDate)
    FROM Sales.SalesOrderHeader as soh
    Where CustomerID = @CustomerID
RETURN @MostRecentOrderDate
END;
GO

-- Using user defined scalar function
SELECT Sales.uf_MostRecentCustomerOrderDate(29825); -- returns 2008-04-01 00:00:00.000 

-- Delete existing scalar valued function
USE AdventureWorks2012;
GO

-- determines if function exists in database
IF OBJECT_ID (N'Sales.uf_MostRecentCustomerOrderDate', N'IF') IS NOT NULL
    -- deletes function
    DROP FUNCTION Sales.uf_MostRecentCustomerOrderDate;
GO

该函数是使用
类型
创建的,类型为
FN
(不是您使用的
IF

请尝试以下代码以删除它:

-- determines if function exists in database
IF OBJECT_ID (N'Sales.uf_MostRecentCustomerOrderDate', N'FN') IS NOT NULL
    -- deletes function
    DROP FUNCTION Sales.uf_MostRecentCustomerOrderDate;
GO
如果
代表内联表值函数,则键入
——这里不是这种情况

Type
FN
代表一个标量函数-这就是


请参阅,其中还列出了SQL Server目录视图中所有定义的类型

是否收到错误?您是否有权限创建功能,但没有权限删除功能?无错误。如果省略if子句,则可以创建和删除。您不需要编写错误。
'N'
是前缀,表示此字符串文字是Unicode字符串(类型为
NVARCHAR
NCHAR
),谢谢,您很好地消除了差异。我把IF误认为“IF”,而不是缩写词“inline function”。