As funções internas do SQL Server
podem ser classificadas em um grupo distinto, a partir do resultado que elas
nos retornam. De acordo com a variação do retorno, podemos chama-las de determinísticas
e não-determinísticas.
- § Funções determinísticas – seu resultado não varia, sendo passado um mesmo conjunto de valores de entrada e um mesmo estado de banco de dados;
- § Funções não-determinísticas – podem retornar valores diferentes para um conjunto de dados, mesmo sem que o banco de dados tenha seu estado alterado.
É bem fácil compreender este
conceito, vamos ver um exemplo, quando executamos uma função AVG(), estando o banco de dados
inalterado, ela sempre resultara no mesmo valor. Se compararmos com o resultado
de uma função GetDate() por exemplo,
mesmo quando temos o banco estável, esta função nos retornara um valor a cada
vez que for executada.
Não é possível alterar o estado
das funções internas do SQL Server, ela permanecerá determinística sou não de
acordo com o que for implementado pelo mecanismo de banco de dados, e você não
tem controle sobre isso.
Esta propriedade das funções pode
afetar a criação de alguns recursos do SQL Server. Por exemplo, você não pode
criar índices clusterizados que utilizam massas de dados com funções não
determinísticas, como no caso de uma View Indexada ou uma coluna calculada
armazenada.
Abaixo, segue uma tabela com
algumas funções internas determinísticas:
ABS
|
DATEDIFF
|
POWER
|
ACOS
|
DAY
|
RADIANS
|
ASIN
|
DEGREES
|
ROUND
|
ATAN
|
EXP
|
SIGN
|
ATN2
|
FLOOR
|
SIN
|
CEILING
|
ISNULL
|
SQUARE
|
COALESCE
|
ISNUMERIC
|
SQRT
|
COS
|
LOG
|
TAN
|
COT
|
LOG10
|
YEAR
|
DATALENGTH
|
MONTH
|
|
DATEADD
|
NULLIF
|
Além destas, podemos considerar
todas as funções internas que executam cadeias de caracteres (strings).
;) até a próxima.
Nenhum comentário:
Postar um comentário