1. Faca um pacote chamado PKG_COMPRADOR com: a.) Procedimento INC_COMPRADOR: incluir uma linha na tabela comprador. Todos os campos devem ser passados como parametro, menos o codigo que deve ser calculado dentro do procedimento (ultimo codigo disponivel mais um). b.) Procedimento ALT_COMPRADOR: alterar uma linha na tabela comprador. Todos os campos devem ser passados como parametro inclusive o codigo. c.) Procedimento EXC_COMPRADOR: excluir uma linha na tabela comprador. Todos os campos devem ser passados como parametro inclusive o codigo. d.) Funcao CON_COMPRADOR: retornar o nome do comprador com base no codigo passado por parametro. e.) Funcao CON_CIDADE: retornar todos os compradores de uma determinada cidade (passada por parametro).2. Faca gatilhos: a.) Some uma oferta no campo NROFERTA da tabela IMOVEL sempre que uma nova oferta (tabela OFERTA) for cadastrada para o imovel. b.) Nao permita que um imovel (tabela IMOVEL) seja cadastrada (DTLANCTO) menor que a data atual do sistema.-- Create Packagecreate or replace package PKG_COMPRADOR is Procedure ALT_COMPRADOR( vl_pCodigo COMPRADOR.CDCOMPRADOR%Type, vl_pCodigoNovo COMPRADOR.CDCOMPRADOR%Type, vl_NumComprador COMPRADOR.NMCOMPRADOR%Type, Vl_NumEndereco COMPRADOR.NMENDERECO%Type, vl_NrCpf COMPRADOR.NRCPF%Type, vl_NrCidade COMPRADOR.NMCIDADE%Type, vl_NrBairro COMPRADOR.NMBAIRRO%Type, vl_NorSGestao COMPRADOR.SGESTADO%Type, vl_NrTelefone COMPRADOR.TELEFONE%Type, vl_NrEmail COMPRADOR.EMAIL%Type); Procedure EXC_COMPRADOR( vl_pCodigo COMPRADOR.CDCOMPRADOR%Type, vl_NumComprador COMPRADOR.NMCOMPRADOR%Type, vl_NumEndereco COMPRADOR.NMENDERECO%Type, vl_NrCpf COMPRADOR.NRCPF%Type, vl_NrCidade COMPRADOR.NMCIDADE%Type, vl_NrBairro COMPRADOR.NMBAIRRO%Type, vl_NorSGestao COMPRADOR.SGESTADO%Type, vl_NrTelefone COMPRADOR.TELEFONE%Type, vl_NrEmail COMPRADOR.EMAIL%Type); Function CON_COMPRADOR (cod_CDCOMPRADOR in VARCHAR2) Return VARCHAR2; Function CON_CIDADE (cod_NMCIDADE in COMPRADOR.NMCIDADE%Type) Return SYS_REFCURSOR; End PKG_COMPRADOR;create or replace package body PKG_COMPRADOR is Procedure ALT_COMPRADOR(vl_pCodigo COMPRADOR.CDCOMPRADOR%Type, vl_pCodigoNovo COMPRADOR.CDCOMPRADOR%Type, vl_NumComprador COMPRADOR.NMCOMPRADOR%Type, Vl_NumEndereco COMPRADOR.NMENDERECO%Type, vl_NrCpf COMPRADOR.NRCPF%Type, vl_NrCidade COMPRADOR.NMCIDADE%Type, vl_NrBairro COMPRADOR.NMBAIRRO%Type, vl_NorSGestao COMPRADOR.SGESTADO%Type, vl_NrTelefone COMPRADOR.TELEFONE%Type, vl_NrEmail COMPRADOR.EMAIL%Type) Is Begin Update COMPRADOR Set CDCOMPRADOR = vl_pCodigoNovo, NMCOMPRADOR = vl_NumComprador, NMENDERECO = Vl_NumEndereco, NRCPF = vl_NrCpf, NMCIDADE = vl_NrCidade, NMBAIRRO = vl_NrBairro, SGESTADO = vl_NorSGestao, TELEFONE = vl_NrTelefone, EMAIL = vl_NrEmail Where CDCOMPRADOR = vl_pCodigo; Commit; End ALT_COMPRADOR; Function CON_COMPRADOR (cod_CDCOMPRADOR in VARCHAR2) Return VARCHAR2 is cod_NMCOMPRADOR COMPRADOR.NMCOMPRADOR%TYPE; Begin Select NMCOMPRADOR Into cod_NMCOMPRADOR From COMPRADOR Where CDCOMPRADOR = cod_CDCOMPRADOR; Return cod_NMCOMPRADOR; End CON_COMPRADOR; Function CON_CIDADE (cod_NMCIDADE in COMPRADOR.NMCIDADE%Type) Return SYS_REFCURSOR is Cidade SYS_REFCURSOR; Begin Open Cidade for Select NMCOMPRADOR from COMPRADOR Where NMCIDADE = cod_NMCIDADE; return Cidade; End CON_CIDADE; Procedure EXC_COMPRADOR( vl_pCodigo COMPRADOR.CDCOMPRADOR%Type, vl_NumComprador COMPRADOR.NMCOMPRADOR%Type, vl_NumEndereco COMPRADOR.NMENDERECO%Type, vl_NrCpf COMPRADOR.NRCPF%Type, vl_NrCidade COMPRADOR.NMCIDADE%Type, vl_NrBairro COMPRADOR.NMBAIRRO%Type, vl_NorSGestao COMPRADOR.SGESTADO%Type, vl_NrTelefone COMPRADOR.TELEFONE%Type, vl_NrEmail COMPRADOR.EMAIL%Type) Is Begin Delete from COMPRADOR Where CDCOMPRADOR = vl_pCodigo And NMCOMPRADOR = vl_NumComprador And NMENDERECO = vl_NumEndereco And NRCPF = vl_NrCpf And NMCIDADE = vl_NrCidade And NMBAIRRO = vl_NrBairro And SGESTADO = vl_NorSGestao And TELEFONE = vl_NrTelefone And EMAIL = vl_NrEmail; Commit; End EXC_COMPRADOR; End PKG_COMPRADOR;--*****************************************--*****************************************-- Create Trigger--*****************************************--*****************************************Create or Replace Trigger SomaOferta After Insert On OFERTA for each row Begin Update IMOVEL set NROFERTAS = nvl(NROFERTAS, 0) + 1 Where CDIMOVEL = :NEW.CDIMOVEL;End SomaOferta; -- select * from oferta-- select * from imovel/*INSERT INTO OFERTA(CDCOMPRADOR, CDIMOVEL, VLOFERTA, DTOFERTA)VALUES(2, 1,100.50, '14/11/2009')*//*insert into IMOVEL(CDIMOVEL, CDVENDEDOR, CDBAIRRO, CDCIDADE, SGESTADO, NMENDERECO, NRAREAUTIL, NRAREATOTAL, DSIMOVEL, VLPRECO, NROFERTAS, STVENDIDO, DTLANCTO, IMOVEL_INDICADO)VALUES(3, 1, 1, 1, 'SP', 'RUALHAMA', '100,00', '99,00', 'LINDO', '50,00',NULL, 'N', '12/11/2009', 1)/*Insert Into COMPRADOR(CDCOMPRADOR,NMCOMPRADOR,NMENDERECO,NRCPF,NMCIDADE,NMBAIRRO,SGESTADO,TELEFONE,EMAIL)Values(3,'TESTE','DESERTO DO ATACAMA','12365498','SANTIAGO',1,1,'123456','TESTE@LHAMA.COM')*/Create Or Replace Trigger DataMaior Before Insert Or Update on IMOVEL for each row Begin If :NEW.DTLANCTO < SYSDATE Then RAISE_APPLICATION_ERROR(-2001, 'DATA INVALIDA!!!'); End If;End DataMaior;/*TesteInsert into IMOVEL(CDIMOVEL, CDVENDEDOR, CDBAIRRO, CDCIDADE, SGESTADO, NMENDERECO, NRAREAUTIL, NRAREATOTAL, DSIMOVEL, VLPRECO, NROFERTAS, STVENDIDO, DTLANCTO,