FUNCTION (função) no SQL Server
- 24-07-2022
- Toanngo92
- 0 Comments
No MS SQL Server, uma função é um recurso que nos ajuda a agrupar instruções SQL em um grupo e pode ser reutilizado muitas vezes, semelhante a escrever uma função em uma linguagem de programação, mas com uma diferença fundamental na sintaxe.
Mục lục
Conceitos de função no MS SQL Server
Se as instruções forem agrupadas e usadas, podemos usar completamente o procedimento armazenado e ainda podemos fazer isso, mas a diferença mais óbvia é que a função tem um valor de retorno e o procedimento armazenado só é executado e não retorna o mesmo valor que uma função.
As funções simplificam o programa e podem ser usadas muitas vezes. Imagine que precisamos fazer um negócio complexo, precisamos passar parâmetros (parâmetro) de fora e processar uma série de instruções SQL em sucessão, depois retornar um determinado valor para determinar a conexão. fim e usar o valor de retorno para trabalho adicional, então a função é a solução mais adequada para este problema.
As funções mais usadas no SQL Server são as seguintes:
Funções determinísticas e não determinísticas (funções determinísticas e não determinísticas):
As funções definitivas retornam o mesmo resultado da consulta toda vez que são chamadas com um conjunto especificado de valores de entrada e especificam o mesmo estado do banco de dados. As funções indefinidas retornam resultados diferentes cada vez que são chamadas com o valor de entrada especificado definido, mesmo que o banco de dados acessado permaneça o mesmo.
Por exemplo, se o usuário chamar a função DAY() em uma coluna específica, ela sempre retornará o número de dias (int) para o parâmetro de tipo de dados de data passado. No entanto, se o usuário chamar a função DATENAME(), a saída não poderá ser prevista porque cada execução retornará um valor diferente, com base no formato da data passada. Portanto, a função DAY() é uma função determinística, enquanto DAYNAME() é uma função indefinida.
O usuário não pode influenciar o determinismo das funções internas, cada função interna é determinística ou indefinida com base em sua implementação no SQL Server.
Algumas das funções determinísticas e funções não determinísticas
Funções internas determinísticas | Funções incorporadas não determinísticas |
POTÊNCIA | @@TOTAL_WRITE |
REDONDO | CURRENT_TIMESTAMP |
RADIANOS | GETDATE |
EXP | GETUTCDATE |
PISO | GET_TRANSMISSION_STATUS |
QUADRADO | NEWID |
SQRT | NEWSEQUENCIALID |
REGISTRO | @@CONEXÕES |
ANO | @@CPU_BUSY |
abdômen | @@DBTS |
COMO EM | @@PARADO |
ACOS | @@IOBUSY |
SINAL | @@PACK_RECEIVED |
SENO | @@PACK_SENT |
Existem algumas funções que nem sempre são indefinidas, você pode usá-las em visualizações indexadas se forem especificadas explicitamente:
Função | Descrição |
CONVERTER | Determinado apenas quando existe uma das seguintes condições: Existe um tipo de origem sql_variant. Há um tipo de destino sql_variant indefinido ou tipo de origem. Faça com que a fonte e o destino sejam smalldatetime ou datetime, ou outro tipo de fonte como string. O estilo do parâmetro deve ser uma constante definida. |
ELENCO | Especifique apenas ao usar smalldatetime, sql_variant, datetime |
ISDATE | Defina a menos que usado em conjunto com a função CONVERT . |
CHECKSUM | Determinar, com exceção de CHECKSUM(*) |
Definição de função no SQL Server
Sintaxe:
CREATE FUNCTION function_name (param_list) RETURN data_type AS BEGIN //statements RETURN value END
Lá:
nome_função: nome da função
param_list : lista de parâmetros passados para a função
RETURN data_type: especifica o tipo de dados de retorno
AS : cláusula que inicia o processo de descrição das instruções da função
//instruções : lista de comandos SQL
Valor de RETORNO : valor de retorno.
Por exemplo:
CREATE FUNCTION tinhphepcong(@x INT, @y INT) RETURNS INT AS BEGIN DECLARE @kq @kq = @x + @y RETURN @kq; END;
Exemplo 2:
CREATE FUNCTION sales.udfuncNetSale( @quantity INT, @list_price DEC(10,2), @discount DEC(10,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @list_price * (1 - @discount); END;
Esta função irá calcular o preço de um produto após ser reduzido.
Após executar a inicialização desta função, você a verá no SSMS clicando em Programabilidade > Funções > Funções com valor escalar.
Como chamar funções no SQL Server
Usamos a sintaxe functionname(param), para poder chamar a função no SQL Server
SELECT phepnhan (10, 20) as kequa
SELECT sales.udfuncNetSale(10,100,0.1) ketqua
Função ALTER no SQL Server
Semelhante ao procedimento armazenado, para editar uma função, você usa a seguinte sintaxe:
ALTER FUNCTION [schema_name.]function_name (parameter_list) RETURN data_type AS BEGIN statements RETURN value END
O novo conteúdo da função substituirá o conteúdo antigo. Este comando só pode ser editado com funções que você mesmo criou, não pode editar funções internas como count, concat.
4. Função DROP no SQL Server
Para excluir uma função, você usa o comando DROP FUNCTION com a seguinte estrutura:
DROP FUNCTION [schema_name.]function_name; // schema_name trong quá trình học thường là dbo
Por exemplo, se você deseja excluir a função criada acima, execute o seguinte comando:
DROP FUNCTION sales.udfNetSale;
Da mesma forma, você só pode excluir funções que você mesmo criou.
Algumas notas:
- Cada função pode ser usada em qualquer lugar na instrução T-SQL e está dentro do escopo do banco de dados.
- Pode haver muitos parâmetros, mas apenas um valor pode ser retornado, o retorno é obrigatório. (semelhante ao conceito de função na programação)
- Qualquer instrução T-SQL pode ser usada dentro da função.
- Nesta função, é possível chamar outra função que foi definida.