Tipos
Escalar
Sintaxe
Aceiram múltiplos parâmetros.
Retornam um único valor.
Instrução RETURN
Podem ser utilizados dentro de qualquer expressão T-SQL incluindo check constraint.
Exemplos
Nota: O nome da schema (dbo) é obrigatório na invocação da UDF
Limitações
Determinísticas
Os mesmos parâmetros de entrada produzem o mesmo valor de retorno.
Não são permitidas funções não-determinísticas dentro das UDF.
newid,
rand(),
etc
Não são permitidos updates à base de dados ou invocação do comando DBCC.
Em termos de valor de retorno não permite:
BLOB (binary large object) - text, ntext, timestamp, image data- type, etc;
Table variables;
Cursores.
Não permite TRY...CATCH ou RAISERROR.
Recursividade limitada a 32 níveis.
Inline Table-valued
Sintaxe
Similares a vistas
Ambas são wrapers para construções SELECT;
Tem as mais valias das vistas acrescido do facto de suportar parâmetros de entrada.
Exemplo
UDF Multi-statement Table-Valued
Sintaxe
Combina a capacidade das funções escalares (conter código complexo) com a capacidade das inline table-valued (retornar um conjunto).
Cria uma table variable, introduz-lhe tuplos e retorna-a.
Tabela retornada pode ser utilizada num SELECT
Exemplo
SP | UDF |
---|---|
return - zero, single or multiple values | return - single value (scalar or table) |
input/output param | input param |
cannot use SELECT/ WHERE/ HAVING statement | can use SELECT/ WHERE/ HAVING statement |
call SP – OK | call SP – NOK |
exception handling - OK | exception handling - NOK |
transactions – OK | transactions – NOK |
Last updated