当我尝试在计算列中使用用户定义的函数时出现错误。计算列中的表达式如下所示:
(dbo.ufGetWaiterIDByTableID([DiningTable ID], [OrderDate]))
但是,当我将此表达式更改为以下
时(dbo.ufGetWaiterIDByTableID([DiningTable ID], '2016-05-10 21:30:15'))
它很好,没有错误信息。 我的函数的第二个参数是datetime2类型,[OrderDate]列也是datetime2(7)类型。 我无法解决问题所在。
错误是
Error validating formula
函数的定义是
ALTER FUNCTION [dbo].[ufGetWaiterIDByTableID]
(
-- Add the parameters for the function here
@tableID int, @adate datetime2(7)
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @waiterID int
-- Add the T-SQL statements to compute the return value here
SELECT @waiterID=tw.[Waiter ID]
FROM TableWaiter tw
WHERE tw.[DiningTable ID]=@tableID AND DATEDIFF(d,tw.AssignDate, @adate)=
(Select min(DATEDIFF(d, AssignDate, @adate))
FROM TableWaiter
WHERE [DiningTable ID]=@tableID AND DATEDIFF(d, AssignDate, @adate)>=0)
-- Return the result of the function
RETURN @waiterID