-
Notifications
You must be signed in to change notification settings - Fork 0
/
PROCEDURE EXERCICIOS
102 lines (68 loc) · 3.07 KB
/
PROCEDURE EXERCICIOS
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
create table cliente (cod_cli number(10), nome varchar2(100) , vlr_renda number (12,2),
constraint cli_pk primary key (cod_cli));
insert into cliente (cod_cli, nome, vlr_renda) values (1, 'Joana', 200);
insert into cliente (cod_cli, nome, vlr_renda) values (2, 'Pedro', 300);
insert into cliente (cod_cli, nome, vlr_renda) values (3, 'Josefa', 400);
insert into cliente (cod_cli, nome, vlr_renda) values (4, 'Marga', 500);
insert into cliente (cod_cli, nome, vlr_renda) values (5, 'Otília', 100);
insert into cliente (cod_cli, nome, vlr_renda) values (6, 'Genoveva', 20);
create table pedido
(cod_pedido number(10), cod_cli number(10), vlr_pedido number(12,2), dt_pedido date,
constraint ped_pk primary key (cod_pedido), constraint cli_ped_pk foreign key (cod_cli) references cliente(cod_cli));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(1,1,100, to_date('01/12/2021','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(2,1,200, to_date('10/12/2021','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(3,2,1000, to_date('01/10/2022','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(4,1,100, to_date('15/01/2023','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(4,1,3500, to_date('01/12/2021','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(5,5,2900, to_date('01/07/2021','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(6,5,3100, to_date('01/12/2021','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(7,4,1500, to_date('10/02/2020','dd/mm/rrrr'));
insert into pedido (cod_pedido, cod_cli, vlr_pedido, dt_pedido) values
(8,4,3100, to_date('26/08/2021','dd/mm/rrrr'));
--A)Uma procedure que aumente em x% o valor da renda do cliente.
--JEITO SEM CURSOR
create or replace procedure exercicio4(p_codCli in number, p_perc in number)
is
begin
update cliente
set vlr_renda = vlr_renda+(vlr_renda*p_perc)/100
where cod_cli= p_codCli;
end;
--JEITO QUE FIZ COM CURSOR
create or replace procedure exerc4 (p_codcli in number, p_perc in number) is
cursor c_atualizar is
select nome, vlr_renda
from cliente
where cod_cli = p_codcli;
r_atualizar c_atualizar%rowtype;
Begin
open c_atualizar;
fetch c_atualizar into r_atualizar;
if c_atualizar%notfound then
raise_application_error(-20200,'erro');
end if;
if c_atualizar%found then
update cliente
set vlr_renda = vlr_renda + (vlr_renda*p_perc/100)
where cod_cli= p_codCli;
end if;
close c_atualizar;
end;
--b-Uma procedure que retorne a soma dos pedidos de um cliente.
create or replace procedure pcr_exe4
(p_codCli in number, p_nome out varchar, p_soma out number) is
begin
select cliente.nome, Sum(vlr_pedido) into p_nome, p_soma
from pedido, cliente
where cliente.cod_cli = pedido.cod_cli
and cliente.cod_cli = p_codCli
group by cliente.nome;
end;