Beckerti 0 Denunciar post Postado Setembro 15, 2013 Boa tarde amigos, Estou com um problema, não estou conseguindo cumprir com a exigência da solicitação, gostaria de uma ajudinha se possível, o meu professor deu isso e não estou conseguindo fazer. objetivo: Listear na tela: Nome e quantidade de amigos de todos os usuário que possuírem mais do que X amigos (informado como parâmetro no procedimento). A cada impressão de usuário o procedimento deverá listar o nome dos amigos deste usuário. tbusuario (pkcodusu,nomeusu,datanasc,sexo,quantamigosativos) tbamigos(fkcodusua,fjkcodusuab,bloqueado) Esse foi o procedimento que fiz, acho que esta errado. CREATE OR REPLACE PROCEDURE busca_amigo(p.nomeamigo IN varchar2, p.nomeamigo OUT varchar2) IS BEGIN SELECT COUNT(u.nomeusu) as qtdeamigo INTO p.nomeamigo FROM TBusuario u, TBamigo a WHERE u.nomeusu = p.nomeusu AND u.pkcodusu = a.fkcodusu; IF SQL%NOTFOUND THEN raise_application_error(‘20013,’Nome Invalido!’p.nome); END IF END; / Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 15, 2013 http://docs.oracle.com/javadb/10.8.1.2/ref/rrefsqlj14854.html Vc deve usar a cláusula HAVING. Compartilhar este post Link para o post Compartilhar em outros sites
Beckerti 0 Denunciar post Postado Setembro 15, 2013 Ola Motta, blz.. você diz fazendo assim.. CREATE OR REPLACE PROCEDURE busca_amigo(p.nomeamigo IN varchar2, p.nomeamigo OUT varchar2) IS BEGIN SELECT COUNT(u.nomeusu) as qtdeamigo INTO p.nomeamigo FROM TBusuario u, TBamigo a WHERE u.nomeusu = p.nomeusu AND u.pkcodusu = a.fkcodusu; GROUP BY u.pkcodusu HAVING u.nomeusua IF SQL%NOTFOUND THEN raise_application_error(‘20013,’Nome Invalido!’p.nome); END IF END; / Tenho que listar a qtde de amigos do amigo e listar os amigos também.. mais o menos assim.. amigo A amigo A amigo B amigo B amigo A amigo B Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 15, 2013 Acho melhor a function retornar a lista de amigos concatenada. Compartilhar este post Link para o post Compartilhar em outros sites
Beckerti 0 Denunciar post Postado Setembro 16, 2013 Motta, se vc puder me dar um exemplo, ainda estou aprendendo, pode ser no código mesmo.. Abraço e obrigado pela força que vc esta dando. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 16, 2013 A sintaxe é Having count(*) > 5 Por exemplo Este 5 poderia ser um parametro. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 17, 2013 CREATE OR REPLACE PROCEDURE busca_amigo(p.nomeamigo IN varchar2, p.nomeamigo OUT varchar2,pqtd in number) IS BEGIN SELECT COUNT(u.nomeusu) as qtdeamigo INTO p.nomeamigo FROM TBusuario u, TBamigo a WHERE u.nomeusu = p.nomeusu AND u.pkcodusu = a.fkcodusu; GROUP BY u.pkcodusu HAVING count(u.nomeusu) >= pqtd; IF SQL%NOTFOUND THEN raise_application_error(‘20013,’Nome Invalido!’p.nome); END IF END; / Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Mtn 0 Denunciar post Postado Abril 19, 2016 beckerti estou com dificuldades no mesmo exercício, conseguiu uma solução para ele? Compartilhar este post Link para o post Compartilhar em outros sites