Primeira aula de PL/SQL Parte II SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER Trigger 3) Crie uma TRIGGER que altere de forma automática o valor da locação aos finais de semana. Aos sábados e Domingos, as locações devem ser acrescidas em 10% . CREATE or replace TRIGGER trg_valor_locacao BEFORE INSERT ON locacao FOR EACH ROW BEGIN If to_char(:new.data_locacao,’d’) in (1,7) then :new.valor:=:new.valor*1.1; End if; END; Testando a Trigger 4) Para testar a trigger “trg_valor_locacao”, insira dados na tabela locacao em diferentes dias da semana para verificar se as locações ocorridas aos sábados e domingos terão seu valor alterado, o que não acontecerá com os outros dias das semana Função 5) Crie uma função para retornar o nome do cliente passando seu código como parâmetro create or replace function NOME_CLIENTE(p_cod_cliente number) return varchar2 is tmp_nome varchar2(20); begin begin select nome into tmp_nome from cliente where cod_cliente = p_cod_cliente; exception when no_data_found then null; end; return (tmp_nome); end; Testando a Função 6) Para testar a função “NOME_CLIENTE” use um SELECT da seguinte maneira: Select NOME_CLIENTE(xyz) from dual; (xyz é o código de um cliente que você inseriu. Como código do cliente é um dado do tipo varchar, não se esqueça de colocar o parâmetro entre aspas simples) Procedure 7) Criar uma “procedure” que mantenha o histórico de locacões, deixando na tabela “locacao”, somente os dados do mês corrente. O restante das informações deverá ser armazenado em uma tabela histórico (locacao_historico). 7 a - Primeiramente, vamos criar a tabela “locacao_historico “ que tem o mesmo esquema da tabela “locacao” Create table locacao_historico (num number, cod_cliente varchar2(20),cod_fita varchar2(10),data_locação date, valor number(7,2)); Procedure 7 b- Agora, vamos criar a Procedure propriamente dita create or replace procedure limpa_locacao is begin for pesquisa in (select * from locacao) loop if to_char(pesquisa.data_locacao,'mm')<>to_char(sysdate,'mm') then insert into locacao_historico values (pesquisa.num, pesquisa.cod_cliente,pesquisa.cod_fita, pesquisa.data_locacao,pesquisa.valor); delete from locacao where num = pesquisa.num; end if; end loop; end; Testando a Procedure 8) Executar a Procedure Exec limpa_locacao;