tah aih
Autor: Ph0enix | Publicado: 2009-11-13T17:19:00-08:00

1. Faça um pacote chamado PKG_COMPRADOR com: a.) Procedimento INC_COMPRADOR: incluir uma linha na tabela comprador. Todos os campos devem ser passados como parâmetro, menos o código que deve ser calculado dentro do procedimento (último código disponível mais um). b.) Procedimento ALT_COMPRADOR: alterar uma linha na tabela comprador. Todos os campos devem ser passados como parâmetro inclusive o código. c.) Procedimento EXC_COMPRADOR: excluir uma linha na tabela comprador. Todos os campos devem ser passados como parâmetro inclusive o código. d.) Função CON_COMPRADOR: retornar o nome do comprador com base no código passado por parâmetro. e.) Função CON_CIDADE: retornar todos os compradores de uma determinada cidade (passada por parâmetro).2. Faça gatilhos: a.) Some uma oferta no campo NROFERTA da tabela IMOVEL sempre que uma nova oferta (tabela OFERTA) for cadastrada para o imóvel. b.) Não permita que um imóvel (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 INVÁLIDA!!!');    End If;End DataMaior;/*TesteInsert into IMOVEL(CDIMOVEL, CDVENDEDOR, CDBAIRRO, CDCIDADE, SGESTADO, NMENDERECO, NRAREAUTIL, NRAREATOTAL, DSIMOVEL, VLPRECO, NROFERTAS, STVENDIDO, DTLANCTO, IMOVEL_INDICADO)VALUES(2, 1, 1, 1, 'SP', 'RUALHAMA', '100,00', '99,00', 'LINDO', '50,00',NULL, 'N', '05/11/2009', 1);*/--select * from imovel--*****************************************--*****************************************--   INSERTS PARA TESTES!--*****************************************--*****************************************--select * from imovel--insert into IMOVEL(CDIMOVEL, CDVENDEDOR, CDBAIRRO, CDCIDADE, SGESTADO, NMENDERECO, NRAREAUTIL, NRAREATOTAL, DSIMOVEL, VLPRECO, NROFERTAS, STVENDIDO, DTLANCTO, IMOVEL_INDICADO) VALUES (1, 1, 1, 1, 'SP', 'RUALHAMA', '100,00', '99,00', 'LINDO', '50,00',NULL, 'N', '12/11/2009', 1)--SELECT * FROM ESTADO--INSERT INTO ESTADO(SGESTADO, NMESTADO)VALUES('SP', 'SAO PAULO')--SELECT * FROM CIDADE--INSERT INTO CIDADE(CDCIDADE, NMCIDADE, SGESTADO)VALUES(1,'SANTIAGO', 'SP')--SELECT * FROM COMPRADOR--Insert Into COMPRADOR(CDCOMPRADOR,NMCOMPRADOR,NMENDERECO,NRCPF,NMCIDADE,NMBAIRRO,SGESTADO,TELEFONE,EMAIL) Values (1,'TESTE','DESERTO DO ATACAMA','12365498','SANTIAGO',1,1,'123456','TESTE@LHAMA.COM')--select * from bairro--insert into bairro(CDBAIRRO, NMBAIRRO, CDCIDADE, SGESTADO) VALUES (1,'RUALHAMA', 1, 'SP')--SELECT * FROM VENDEDOR--INSERT INTO VENDEDOR(CDVENDEDOR, NMVENDEDOR, NMENDERECO, NRCPF, NMCIDADE, NMBAIRRO, SGESTADO, TELEFONE, EMAIL)VALUES(1, 'TESTE ANGELO', 'RUALHAMA', 1234567, 'SAO PEDRO', 'LHAMA', 'SP', '123456', 'TESTE@LHAMA.COM')--SELECT * FROM OFERTA--INSERT INTO OFERTA(CDCOMPRADOR, CDIMOVEL, VLOFERTA, DTOFERTA)VALUES(1, 1,NULL, '12/11/2009')