logo

Funções do SQL Server

Funções no SQL Server são os objetos de banco de dados que contêm um conjunto de instruções SQL para executar uma tarefa específica . Uma função aceita parâmetros de entrada, executa ações e retorna o resultado. Devemos observar que as funções sempre retornam um único valor ou uma tabela. O principal objetivo das funções é replicar facilmente a tarefa comum. Podemos construir funções uma vez e usá-las em vários locais com base em nossas necessidades. O SQL Server não permite a utilização das funções de inserção, exclusão ou atualização de registros nas tabelas do banco de dados.

java matemática.random

A seguir estão as regras para criar funções do SQL Server:

  • Uma função deve ter um nome e o nome não pode começar com um caractere especial como @, $, # ou outros caracteres semelhantes.
  • As instruções SELECT são as únicas que operam com funções.
  • Podemos usar uma função em qualquer lugar, como AVG, COUNT, SUM, MIN, DATE e outras funções com a consulta SELECT em SQL.
  • Sempre que uma função é chamada, ela é compilada.
  • As funções devem retornar um valor ou resultado.
  • As funções usam apenas parâmetros de entrada.
  • Não podemos usar instruções TRY e CATCH em funções.

Tipos de funções

O SQL Server categoriza as funções em dois tipos:

  • Funções do sistema
  • Funções definidas pelo usuário

Vamos descrever ambos os tipos em detalhes.

Funções do sistema

As funções definidas pelo sistema são conhecidas como funções do sistema. Em outras palavras, todos os funções integradas suportadas pelo servidor são chamadas de funções do sistema. As funções integradas economizam tempo ao executar a tarefa específica. Esses tipos de funções geralmente funcionam com a instrução SQL SELECT para calcular valores e manipular dados.

Aqui está a lista de algumas funções do sistema usadas no SQL Server:

  • Funções de string (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Funções de data e hora (datetime, datetime2, smalldatetime)
  • Funções agregadas (COUNT, MAX, MIN, SUM, AVG)
  • Funções matemáticas (ABS, POWER, PI, EXP, LOG)
  • Funções de classificação (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

A imagem a seguir mostra todas as funções de banco de dados integradas usadas no SQL Server:

Funções do SQL Server

Funções definidas pelo usuário

Funções que são criado pelo usuário no banco de dados do sistema ou em um banco de dados definido pelo usuário são conhecidas como funções definidas pelo usuário. As funções UDF aceitam parâmetros, executam ações e retornam o resultado. Essas funções nos ajudam a simplificar nosso desenvolvimento, encapsulando lógica de negócios complexa e disponibilizando-a para reutilização em qualquer lugar com base nas necessidades. As funções definidas pelo usuário tornam o código necessário para consultar dados muito mais fácil de escrever. Eles também melhoram a legibilidade e a funcionalidade das consultas, além de permitir que outros usuários repliquem os mesmos procedimentos.

O SQL Server categoriza as funções definidas pelo usuário principalmente em dois tipos:

  1. Funções escalares
  2. Funções com valor de tabela

Aqui estão as descrições dessas funções UDF.

Funções escalares

Função escalar no SQL Server sempre aceita parâmetros, simples ou múltiplos, e retorna um único valor . As funções escalares são úteis na simplificação do nosso código. Suponha que possamos ter um cálculo complexo que aparece em várias consultas. Nesse caso, podemos construir uma função escalar que encapsula a fórmula e a utiliza em cada consulta, em vez de em cada consulta.

A seguir estão a sintaxe que ilustra a criação da função escalar no SQL Server:

 CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Os parâmetros de sintaxe acima são descritos abaixo:

Definiremos primeiro o nome da função após o CRIAR FUNÇÃO palavras-chave. O nome do esquema é opcional. Se não definirmos o nome do esquema, o SQL Server usará o esquema padrão dbo . A seguir definiremos a lista de parâmetros entre parênteses. Terceiro, escreveremos as instruções para a função e então, no DEVOLUÇÕES instrução, defina o tipo de dados do valor de retorno. Finalmente, adicionamos a instrução RETURN para retornar um valor dentro do corpo da função.

Exemplo

Este exemplo criará uma função para calcular as vendas líquidas com base na quantidade, preço e valor do desconto:

 CREATE FUNCTION udfNet_Sales( @quantity INT, @price DEC(10,2), @discount DEC(3,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @price * (1 - @discount); END; 

Agora podemos usar esta função para calcular as vendas líquidas de qualquer pedido de venda na tabela definida.

A imagem a seguir mostra onde podemos encontrar as funções escalares:

Funções do SQL Server

Podemos chamar as funções escalares da mesma forma que a função interna do SQL Server. Por exemplo, podemos chamar a função udfNet_Sales acima como abaixo:

 SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales; 

A execução desta função retornará as vendas líquidas:

Funções do SQL Server

O SQL Server também nos permite para modificar a função escalar usando o ALTER palavra-chave. Aqui está a sintaxe para fazer isso:

 ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Podemos usar a instrução abaixo para remover a função escalar do banco de dados SQL Server:

 DROP FUNCTION [schema_name.]function_name; 

Funções com valor de tabela

Funções com valor de tabela no SQL Server são as função definida pelo usuário que retorna dados de um tipo de tabela. Como esta função tipo de retorno é uma tabela , podemos usá-lo da mesma forma que usamos uma tabela.

Podemos categorizar a função com valor de tabela em dois tipos:

1. Funções de valores de tabela embutidas

Esta função UDF retorna uma variável de tabela com base na ação executada pela função. Uma única instrução SELECT deve ser usada para determinar o valor da variável da tabela.

Exemplo

O exemplo abaixo criará uma função de valores de tabela e recuperará os dados da tabela de funcionários:

 --It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee) 

Nesta sintaxe, o TABELA DE DEVOLUÇÕES especifica que a função retornará uma tabela. Como não há COMEÇO...FIM declaração, ele simplesmente consulta dados da tabela de funcionários. Além disso, se não tiver nenhum parâmetro, será chamado diretamente.

Podemos chamar as funções com valor de tabela usando o DE cláusula do SELECIONAR consulta. Por exemplo , podemos chamar o acima udf_GetEmployee funcionar conforme abaixo:

 SELECT * FROM udf_GetEmployee(); 

A execução desta função retornará o resultado abaixo:

Funções do SQL Server

O SQL Server também nos permite modificar as funções com valor de tabela usando a palavra-chave ALTER em vez da palavra-chave CREATE. O resto do script é o mesmo.

Funções com valor de tabela com múltiplas instruções (MSTVF)

Esta função UDF retorna uma variável de tabela com base na ação executada pela função. Pode conter instruções únicas ou múltiplas para produzir o resultado e também é uma função que retorna o resultado de múltiplas instruções em formato tabular. É útil porque podemos executar várias instruções nesta função e obter resultados agregados na tabela retornada. Podemos definir esta função usando uma variável de tabela como valor de retorno. Dentro da função, executamos múltiplas consultas e inserimos dados nesta variável da tabela.

O exemplo a seguir cria um nome de função 'MULTIVALORIZADO' que retorna o ' @Funcionário' mesa. Ele contém três campos denominados id, emp_name e salário do 'Funcionário' tabela usando a instrução INSERT e, em seguida, usa a instrução UPDATE para atualizar o nome do funcionário.

 CREATE FUNCTION MULTIVALUED() RETURNS @Employee TABLE (id INT, emp_name VARCHAR(50), salary INT) AS BEGIN INSERT INTO @Employee SELECT E.id, E.emp_name, E.salary FROM Employee E; UPDATE @Employee SET emp_name = 'Graeme Smith' WHERE id = 3; RETURN END 

Podemos chamar as funções com valor de tabela com múltiplas instruções usando a cláusula FROM da consulta SELECT. Por exemplo , podemos chamar a função acima como abaixo:

 SELECT * FROM MULTIVALUED(); 

A execução desta função retornará o resultado abaixo:

Funções do SQL Server

Quando as funções com valor de tabela devem ser usadas?

Funções com valor de tabela são comumente usadas como visualizações parametrizadas. Funções com valor de tabela são mais flexíveis que procedimentos armazenados porque podem ser usadas em qualquer lugar que tabelas sejam usadas.

Conclusão

Este artigo explicará uma visão geral completa das funções usadas no SQL Server. Aqui aprendemos principalmente dois tipos de funções usadas no SQL Server: funções de sistema e funções definidas pelo usuário.