Olá! Meu nome é Victorino Vila e serei instrutor no curso Microsoft SQL Server 2022: aprofundando em procedures e funções.
Esse curso é uma continuação do curso anterior. Veremos mais sobre T-SQL, que é a linguagem de programação que fornece uma extensão ao padrão ANSI do SQL Server.
Quem já tem experiência com programação sabe como funciona funções e procedures.
Inclusive, no SQL Server, já vimos uma série de funções existentes. Quando usamos o LTRIM para retirar espaços em branco do lado esquerdo de um texto, por exemplo, estamos usando uma função. A diferença é que essa função já está pronta no SQL Server.
Neste curso aprenderemos a criar uma função própria, a nossa função, com nossos códigos em T-SQL.
O mesmo vale para procedimentos (procedures). Normalmente, os procedimentos executam um determinado processo. Mas podem retornar valores através de um tipo de passagem de parâmetros utilizado durante a sua construção.
O terceiro assunto deste curso será cursor, que é uma estrutura do SQL que permite que possamos armazenar em memória o resultado de uma consulta e percorrer linha a linha dessa mesma consulta, fazendo assim operações em cada uma dessas linhas.
Espero que vocês gostem desse curso! Um abraço e até o próximo vídeo!
Já vimos em outros treinamentos que o SQL Server possui uma gama de funções que podem ser usadas não somente em comandos de seleção, mas também em comandos de T-SQL, inserts, updates, deletes e estruturas dentro de whiles e ifs.
Já fizemos alguns exemplos do uso de função, como por exemplo:
Já vimos tudo isso. Mas uma novidade que aprenderemos é que podemos construir nossas próprias funções, usando nossa lógica, nossa programação.
Podemos usar essas funções da mesma maneira que utilizamos as funções predefinidas dentro do SQL Server.
O que é uma função?
Conjunto de declarações T-SQL que são armazenadas no banco de dados, e que são projetadas para retornar um conjunto de resultados (escalares ou tabelas).
Quando falamos que a função pode retornar um valor escalar, queremos dizer que pode retornar um string, um número ou uma data. "Escalar" significa qualquer tipo daqueles que usamos quando definimos campos no momento em que criamos uma tabela.
Essas funções são chamadas de funções do tipo UDF (User Defined-Function) é o nome dado às funções desenvolvidas pelos usuários do SQL Server.
Então, quando eu falar "Crie uma função UDF" estou querendo que você crie uma função sua, é uma função criada pela pessoa usuária que está conectada no SQL Server.
** Exemplo da forma com que se declara uma função:**
CREATE FUNCTION <NOME DA FUNÇÃO> (<PARAMETROS DE ENTRADA>)
RETURNS <TIPO DE RETORNO>
AS
BEGIN
-- CORPO DA FUNÇÃO
RETURN <VARIÁVEL DE RETORNO>
END
Nós usamos o comando CREATE FUNCTION para criar a função, em seguida escrevemos o nome da função e, entre parênteses, colocamos os parâmetros de entrada da função junto com seu tipo. Podemos ter um ou vários parâmetros, todos eles são declarados separados por vírgula.
Depois, usamos o comando RETURNS para determinar o tipo de retorno da função. Nesse comando RETURNS não colocamos o nome de uma variável, colocamos apenas o tipo que será retornado por aquela função.
Em seguida, colocamos AS BEGIN e digitamos o corpo da função. No corpo da função é que teremos as linhas em T-SQL descrevendo a regra de cálculo da função. Dentro desses comandos, em algum momento precisamos inserir o comando RETURN mostrando omomento em que a função exibe seus valores de saída.
Exemplo prático:
CREATE FUNCTION Concatenate
(
@String1 VARCHAR(255),
@String2 VARCHAR(255)
)
RETURNS VARCHAR(255)
AS
BEGIN
RETURN @String1 + String2
END
Temos aqui um exemplo prático de uma função que concatena duas strings.
Temos o comando CREATE FUNCTION, depois definimos o nome da função, no caso Concatenate
. Entre parênteses declaramos as variáveis de entrada, duas strings junto com seu tipo.
No final, colocamos o comando RETURNS e o tipo de retorno AS BEGIN e colocamos o corpo da função e a palavra RETURN indicando o retorno, seguido por um END.
Estes foram os exemplos. No próximo vídeo criaremos a nossa primeira função.
Vamos criar nossa primeira função. Para isso, estamos no Microsoft SQL Server Management Studio. Estou conectado no meu servidor de SQL Server e estou visualizando a base SUCOS_VENDAS
.
Agora, vamos clicar em "Nova Consulta" e verificar se estamos visualizando mesmo a base SUCOS_VENDAS
.
Vamos determinar o faturamento total de uma nota fiscal.
Se multiplicarmos a quantidade pelo preço teremos o faturamento. Como o preço está definido com cedilha, vamos colocá-lo entre colchetes.
Vamos pegar o SUM dessa multiplicação, colocar FROM [dbo].ITENS NOTAS FISCAIS
e um filtro WHERE NUMERO = 100
.
SELECT SUM(QUANTIDADE * [PREÇO])
FROM [dbo].[ITENS NOTAS FISCAIS]
WHERE NUMERO = 100
Essa consulta vai dar o faturamento da nota fiscal número 100. O campo NUMERO
representa o número da nota fiscal.
Podemos clicar em "Executar" para verificar qual será o resultado:
Nenhum nome de coluna | |
---|---|
1 | 3080,168 |
O faturamento da nota fiscal 100 é 3080,168.
Agora, vamos fazer uma função que retornará o faturamento de uma nota e o parâmetro que passaremos para essa função é o número da nota fiscal.
Para começar a criação dessa função usaremos CREATE FUNCTION e o nome que definiremos para essa função, entre parênteses vamos definir o número de entrada, que é o número da nota.
Como sabemos que o número da nota fiscal, da tabela de itens, é um inteiro, vamos definir esse parâmetro como sendo um INT.
CREATE FUNCTION FaturamentoNota (@NUMERO AS INT)
Em seguida, vamos colocar RETURNS e o tipo do dado que essa função vai retornar.
Quando executamos a consulta anterior, o valor que foi retornado foi um número com casas decimais. Então, podemos definir o tipo de retorno como sendo um FLOAT.
CREATE FUNCTION FaturamentoNota (@NUMERO AS INT)
RETURNS FLOAT
AS
BEGIN
END;
Entre o BEGIN e o END colocaremos o conteúdo da função que queremos rodar, que é a que fizemos anteriormente. Mas vamos melhorar a função.
Primeiro vamos declarar uma variável chamada @FATURAMENTO
, que vai receber o faturamento da nota fiscal, do tipo FLOAT.
E o SUM(QUANTIDADE * [PREÇO])
será atribuído à variável @FATURAMENTO
. Vamos também substituir 100 por @NUMERO.
Agora, basta darmos RETURN @FATURAMENTO
.
CREATE FUNCTION FaturamentoNota (@NUMERO AS INT)
RETURNS FLOAT
AS
BEGIN
DECLARE @FATURAMENTO FLOAT
SELECT @FATURAMENTO = SUM(QUANTIDADE * [PREÇO])
FROM [dbo].[ITENS NOTAS FISCAIS]
WHERE NUMERO = @NUMERO
RETURN @FATURAMENTO
END;
Temos o nosso comando. Agora vamos selecionar o bloco de código e clicar em "Executar".
Teremos o seguinte retorno:
Comandos concluídos com êxito.
Podemos verificar no painel da estrutura dos arquivos que temos uma pasta chamada "Programação". A função que acabamos de criar está no caminho Programação/Funções/Funções com valor escalar/dbo.FaturamentoNota
.
Podemos usar essa função recém-criada dentro de um SELECT, por exemplo.
SELECT NUMERO, dbo.FaturamentoNota(NUMERO) AS FATURAMENTO
FROM [dbo].[NOTAS FISCAIS]
Ao executar essa seleção conseguiremos visualizar o valor do faturamento de cada nota do banco de dados:
NUMERO | FATURAMENTO | |
---|---|---|
1 | 100 | 3080,168 |
2 | 101 | 465,735 |
3 | 102 | 1521,9495 |
4 | 103 | 348,319 |
5 | 104 | 1188,726 |
6 | 105 | 4166,403 |
7 | 106 | 610,23 |
8 | 107 | 1256,7275 |
9 | 108 | 1680,7 |
10 | 109 | 1164,024 |
É isso! Criamos a nossa primeira função.
O curso Microsoft SQL Server 2022: aprofundando em procedures e funções possui 132 minutos de vídeos, em um total de 38 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.