Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beckerti

Listar registro de duas tabelas

Recommended Posts

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

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

Acho melhor a function retornar a lista de amigos concatenada.


Compartilhar este post


Link para o post
Compartilhar em outros sites

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

A sintaxe é

 

Having count(*) > 5

 

Por exemplo

 

Este 5 poderia ser um parametro.

Compartilhar este post


Link para o post
Compartilhar em outros sites


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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.