Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que é uma UDF escalar no SQL Server?


No SQL Server, uma UDF escalar, ou função escalar definida pelo usuário, é uma função definida pelo usuário que retorna um único valor.

Isso contrasta com uma função com valor de tabela, que retorna um conjunto de resultados na forma de uma tabela.

As funções definidas pelo usuário podem ser escritas como UDFs T-SQL ou UDFs CLR (Common Language Runtime). O CLR permite que você crie UDFs em código gerenciado usando qualquer linguagem de programação .NET Framework. Essas funções são então acessíveis ao T-SQL ou outro código gerenciado.


Exemplo 1 – UDF escalar básica


Aqui está um exemplo do código usado para criar uma UDF escalar T-SQL básica.
CREATE FUNCTION dbo.ufn_discountPrice( @price DECIMAL(12,2), @discount DECIMAL(12,2) ) RETURNS DECIMAL (12,2)ASBEGIN RETURN @price * (1 - @discount);END; 
Essa UDF escalar aceita dois parâmetros; @price e @discount . Estes são passados ​​para a função como argumentos sempre que a função é invocada. A função recebe o valor desses argumentos, executa um cálculo usando esses valores e retorna o valor resultante. Neste caso, o preço com desconto é devolvido.

Exemplo 2 – Invocar a UDF


Depois que a UDF for criada, ela poderá ser invocada no código T-SQL sempre que você precisar.

Aqui está um exemplo de invocar a UDF:
SELECT dbo.ufn_discountPrice(100, .2) AS Resultado;

Resultado
+----------+| Resultado ||----------|| 80,00 |+----------+

Você também pode usar UDFs escalares em colunas computadas. Isso pode ser particularmente útil se você precisar que a coluna computada acesse dados em outra tabela.

Opções de função


Quando você cria uma UDF escalar, há várias opções que podem ser aplicadas à função.

Por exemplo, você pode especificar se deve ou não ser vinculado ao esquema. Você pode especificar que ele deve ser criptografado. Você também pode especificar um EXECUTE AS cláusula para especificar o contexto de segurança sob o qual a função definida pelo usuário é executada.

Consulte a documentação da Microsoft para obter uma lista detalhada de opções que você pode fornecer ao criar ou alterar uma função definida pelo usuário.

Tipo de dados de parâmetro


Para funções T-SQL, todos os tipos de dados, incluindo tipos CLR definidos pelo usuário e tipos de tabela definidos pelo usuário, são permitidos, exceto timestamp e o cursor não escalar e tabela tipos.

Para funções CLR, todos os tipos de dados, incluindo tipos CLR definidos pelo usuário, são permitidos, exceto texto , ntext , imagem , tipos de tabela definidos pelo usuário, carimbo de data e hora tipos de dados e o cursor não escalar e tabela tipos.

Tipo de dados de retorno


O tipo de dados de retorno para UDFs escalares T-SQL pode ser qualquer tipo de dados, exceto timestamp e o cursor não escalar e tabela tipos.

As funções CLR podem usar qualquer tipo de dados, exceto texto , ntext , imagem , carimbo de data e hora , e o cursor não escalar e tabela tipos.

As funções T-SQL e CLR podem ter um tipo CLR definido pelo usuário para seu valor de retorno.