小编Bri*_*haw的帖子

objectproperty() 如何判断函数在 sql server 中是否具有确定性?

sql server 如何判断一个函数是否是确定性的?

考虑下面的函数,我认为它是确定性的(因为它最终是一个整数运算),但是当我调用它的 objectproperty 方法时,sql server 返回 0。

了解它是如何工作的将帮助我理解为什么我对这个功能的评估是错误的。

CREATE FUNCTION dbo.EndOfPreviousMonth ( @Date date )
RETURNS date
AS BEGIN
    RETURN DATEADD(day, 0 - DAY(@Date), @Date);
END;

SELECT dbo.EndOfPreviousMonth('2010-01-01'); --Usage example

--Returns 0, I expected it to return 1
SELECT OBJECTPROPERTY( OBJECT_ID( 'dbo.EndOfPreviousMonth' ), 'IsDeterministic' );
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server-2008-r2

7
推荐指数
1
解决办法
2821
查看次数