-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path009-procedure-banco-dados.sql
59 lines (44 loc) · 1.34 KB
/
009-procedure-banco-dados.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
Agora vamos ver como criar uma procedure.
Procedure são úteis quando queremos "automatizar" uma tarefa,
uma tarefa que executamos repetidas vezes como gerar um relatório por exemplo.
*/
-- 1. Procedimento para calcular o bonus de um departamento com SELECT
CREATE PROCEDURE calcular_bonus(departamento_id INTEGER)
AS
BEGIN
SELECT AVG(salario) AS media_salarios
FROM funcionarios
WHERE departamento = departamento_id;
END;
-- 1.2 Chamando procedimento
CALL calcular_bonus(2);
-- 2. Procedimento para calcular o bonus de um departamento com UPDATE
CREATE PROCEDURE atualizar_bonus(departamento_id INTEGER)
AS
BEGIN
UPDATE departamentos
SET bonus = (
SELECT AVG(salario) AS media_salario
FROM funcionarios WHERE departamento = departamento_id
);
END;
-- 2.2 Chamando procedimento
CALL atualizar_bonus(2);
-- 3. Procedimento para excluir um funcionário
CREATE PROCEDURE demitir_funcionario(id INTEGER)
AS
BEGIN
DELETE FROM funcionarios WHERE id = id;
END;
-- 3.2 Chamando procedimento
CALL demitir_funcionario(3)
-- 4. Criando procedimento para inserir novo funcionario
CREATE OR REPLACE PROCEDURE inserir_cliente(nome TEXT, email TEXT)
AS
BEGIN
INSERT INTO clientes (nome, email)
VALUES (nome, email);
END;
-- 4.2 Chamando procedimento
CALL inserir_cliente('Joaquim', 'joaquim@joaquim')