Deterministic functions always return the same result any time they are called with a specific set of input values and given the same state of the database. Nondeterministic functions may return different results each time they are called with a specific set of input values even if the database state that they access remains the same.
The following built-in functions from categories of built-in functions other than aggregate and string functions are always deterministic.
| ABS | DATEDIFF | PARSENAME |
| ACOS | DAY | POWER |
| ASIN | DEGREES | RADIANS |
| ATAN | EXP | ROUND |
| ATN2 | FLOOR | SIGN |
| CEILING | ISNULL | SIN |
| COALESCE | ISNUMERIC | SQUARE |
| COS | LOG | SQRT |
| COT | LOG10 | TAN |
| DATALENGTH | MONTH | YEAR |
| DATEADD | NULLIF |
|
The following functions are not always deterministic, but can be used in indexed views or indexes on computed columns when they are specified in a deterministic manner.
| Function | Comments |
| CAST | Deterministic unless used with datetime, smalldatetime, or sql_variant. |
| CONVERT | Deterministic unless one of these conditions exists:
- Source type is sql_variant.
- Target type is sql_variant and its source type is nondeterministic.
- Source or target type is datetime or smalldatetime, the other source or target type is a character string, and a nondeterministic style is specified. To be deterministic, the style parameter must be a constant. Additionally, styles less than or equal to 100 are nondeterministic, except for styles 20 and 21. Styles greater than 100 are deterministic, except for styles 106, 107, 109 and 113.
|
| CHECKSUM | Deterministic, with the exception of CHECKSUM(*). |
| ISDATE | Deterministic only if used with the CONVERT function, the CONVERT style parameter is specified and style is not equal to 0, 100, 9, or 109. |
| RAND | RAND is deterministic only when a seed parameter is specified. |
All the configuration, cursor, metadata, security, and system statistical functions are nondeterministic. For a list of these functions, see Configuration Functions (Transact-SQL), Cursor Functions (Transact-SQL), Metadata Functions (Transact-SQL), Security Functions (Transact-SQL), and System Statistical Functions (Transact-SQL).
The following built-in functions from other categories are always nondeterministic.
| @@CONNECTIONS | @@TOTAL_READ |
| @@CPU_BUSY | @@TOTAL_WRITE |
| @@DBTS | CURRENT_TIMESTAMP |
| @@IDLE | GETDATE |
| @@IO_BUSY | GETUTCDATE |
| @@MAX_CONNECTIONS | GET_TRANSMISSION_STATUS |
| @@PACK_RECEIVED | MIN_ACTIVE_ROWVERSION |
| @@PACK_SENT | NEWID |
| @@PACKET_ERRORS | NEWSEQUENTIALID |
| @@TIMETICKS | RAND |
| @@TOTAL_ERRORS | TEXTPTR |
No comments:
Post a Comment