Tsql SQL Server 2012-无法删除用户定义的函数
以下语法成功创建了用户定义的函数,但没有删除它。谁能确定我的错误在哪里 --示例1-标量函数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
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
如果
代表内联表值函数,则键入——这里不是这种情况
TypeFN
代表一个标量函数-这就是
请参阅,其中还列出了SQL Server目录视图中所有定义的类型是否收到错误?您是否有权限创建功能,但没有权限删除功能?无错误。如果省略if子句,则可以创建和删除。您不需要编写错误。'N'
是前缀,表示此字符串文字是Unicode字符串(类型为NVARCHAR
或NCHAR
),谢谢,您很好地消除了差异。我把IF误认为“IF”,而不是缩写词“inline function”。