CONNECT g121if685_eq05/123456@//itapissuma.cin.ufpe.br:1521/dbdisc ; questoes or 1) select a.telefones from funcionario_tb a where 1< (select count(distinct(deref(c.escritorio).id_esc)) from contrata_tb c where a.cpf=c.funcionario.cpf) and 5>(select count(distinct(deref(c.escritorio).id_esc)) from contrata_tb c where a.cpf=c.funcionario.cpf); 2) select a.nome,sum(f.duracao) from funcionario_tb a,equipamento_tb f where a.cpf in (select deref(b.funcionario).cpf from contrata_tb b where b.id_contrata in (select deref(c.contrata).id_contrata from equipamento_tb c where c.duracao = f.duracao)) and 1< (select count(deref(p.gerente).cpf) from funcionario_tb p where a.cpf=p.gerente.cpf) group by a.nome ; 3) insert into cliente_tb (id_cliente,nome,telefones,email,endereco) values (2223,'filho2',telefones_cl_nt(32710421,88447695),email_nt('bol','uol'), (select e.endereco from funcionario_tb e where e.dataNascimento =(select min(x.dataNascimento) from funcionario_tb x ))); 4) alter type evento_tb add constructor function evento_tp (tipo varchar2) return self as result cascade; create or replace type body evento_tp as constructor function evento_tp(tipo varchar2) return self as result is begin IF tipo = 'feira' THEN duracao := 1; end if; if tipo = 'festival' then duracao := 3; end if; if tipo = 'congresso' then duracao := 7; end if; return; end; end ; insert into tb_evento (id_evento,duracao) values(1,evento_tp('feira')); 5) alter type escritorio_tp add member function custo return varchar2 cascade; create or replace type body escritorio_tp as member function custo return varchar2 is media float; begin select avg(x.preco) into media from escritorio_tb p , equipamento_tb x where p.id_esc in (select deref(a.escritorio).id_esc from contrata_tb a where a.id_contrata in (select deref(m.contrata).id_contrata from equipamento_tb m where x.id_esq=m.id_esq ) ) and id_esc=self.id_esc; if media <200 then return 'baixo custo'; end if; if media > 200 and media <500 then return 'medio custo'; end if; if media >500 then return 'alto custo'; end if; end; end; 6) alter type cliente_tp add member function ev return number cascade; create or replace type body cliente_tp as member function ev return number is ret number; begin select count(distinct(e.id_evento)) into ret from tb_evento e,associado_tb a where 1<(select count(*) from table(select p.pontos_vendas from tb_evento p where e.id_evento=p.id_evento )) and e.id_evento = (select deref(v.evento).id_evento from associado_tb v where v.id_associado = a.id_associado) and self.id_cliente = (select deref(f.cliente).id_cliente from associado_tb f where f.id_associado= a.id_associado); return ret; end; end; 7) alter type pessoa_fisica_tp add member procedure ret cascade; create or replace type body pessoa_fisica_tp as member procedure ret is nomev varchar2(100); cnpjv number; qtd number; cursor c is select n.nome,n.cnpj,count((select * from table(select a.telefones from pessoa_juridica_tb a where a.cnpj=n.cnpj ))) from pessoa_juridica_tb n where n.endereco.cidade = (select x.endereco.cidade from pessoa_fisica_tb x where x.cpf=self.cpf) group by n.nome,n.cnpj; begin open c; fetch c into nomev,cnpjv,qtd; dbms_output.put_line( nomev); dbms_output.put_line( cnpjv ); dbms_output.put_line( qtd ); end; end; 8) create or replace type body funcionario_tp as member procedure func (datai DATE,dataf DATE) is id number; nome varchar2(100); cursor c is select e.nome,e.id_esc into nome,id from escritorio_tb e ,contrata_tb c where e.id_esc=(select deref(a.escritorio).id_esc from contrata_tb a where a.id_contrata=c.id_contrata) and self.cpf=(select deref(f.funcionario).cpf from contrata_tb f where f.id_contrata = c.id_contrata) and c.data_contratacao>datai and c.data_contratacao