patternMinor
How does objectproperty() figure out if a function is deterministic in sql server?
Viewed 0 times
figuresqlfunctionobjectpropertydeterministicdoeshowserverout
Problem
How does sql server determine if a function is deterministic or not?
Consider the following function, I think it's deterministic (as it's ultimately an integer operation), but sql server returns 0 when I call the objectproperty method on it.
Understanding how it works will help me understand why I'm wrong in my assessment of this function.
Consider the following function, I think it's deterministic (as it's ultimately an integer operation), but sql server returns 0 when I call the objectproperty method on it.
Understanding how it works will help me understand why I'm wrong in my assessment of this function.
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' );Solution
First it looks whether used functions are deterministic.
Then it looks whether your function is schema bound.
(Or in reverse order.)
So add
Then it looks whether your function is schema bound.
(Or in reverse order.)
So add
with schemabinding to your function.Context
StackExchange Database Administrators Q#12594, answer score: 7
Revisions (0)
No revisions yet.