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
CREATE TABLE tbusuario (
pkcodusu integer not null PRIMARY KEY,
nomeusu varchar2(30),
datanasc date,
sexo varchar2(1),
quantamigosativos integer,
quantmsgnaolidas integer,
nacionalidade varchar2(30)
);
CREATE TABLE tbamigos (
fkcodusua integer not null ,
fkcodusub integer not null ,
bloqueado integer,
PRIMARY KEY(fkcodusua,fkcodusub),
FOREIGN KEY(fkcodusua) REFERENCES tbusuario (pkcodusu),
FOREIGN KEY(fkcodusub) REFERENCES tbusuario (pkcodusu)
);
CREATE TABLE tbmensagem (
pkcodmensagem integer not null PRIMARY KEY,
conteudo varchar2(150),
fkcodusuaorigem integer not null ,
fkcodusudestino integer not null ,
statuslida integer,
FOREIGN KEY(fkcodusuaorigem) REFERENCES tbusuario (pkcodusu),
FOREIGN KEY(fkcodusudestino) REFERENCES tbusuario (pkcodusu)
);
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(1,'xuxa','02/03/1977','F',0,0,'Brasileiro');
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(2,'Bozo','12/04/1985','M',0,0,'Brasileiro');
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(3,'Gugu','07/05/1987','M',0,0,'Brasileiro');
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(4,'Eliana','07/05/1991','F',0,0,'Brasileiro');
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(5,'Patati','09/07/1991','M',0,0,'Brasileiro');
insert into tbusuario(pkcodusu,nomeusu,datanasc,sexo,quantamigosativos,quantmsgnaolidas,nacionalidade) values(6,'Patata','11/01/1990','M',0,0,'Brasileiro');
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(1,3,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(1,4,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(1,6,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(6,5,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(6,2,1);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(6,3,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(4,2,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(4,3,0);
insert into tbamigos(fkcodusua,fkcodusub,bloqueado) values(5,1,0);
insert into tbmensagem(pkcodmensagem,conteudo,fkcodusuaorigem,fkcodusudestino,statuslida) values(1,'Ola amigo',1,5,0);
insert into tbmensagem(pkcodmensagem,conteudo,fkcodusuaorigem,fkcodusudestino,statuslida) values(2,'quer TC?',4,2,1);
insert into tbmensagem(pkcodmensagem,conteudo,fkcodusuaorigem,fkcodusudestino,statuslida) values(3,'Hoje não sera possivel',1,5,1);
insert into tbmensagem(pkcodmensagem,conteudo,fkcodusuaorigem,fkcodusudestino,statuslida) values(4,'Que dia complicado',5,1,1);
insert into tbmensagem(pkcodmensagem,conteudo,fkcodusuaorigem,fkcodusudestino,statuslida) values(5,'Vamos ver um filme?',4,2,0);
e esse é o codigo, mas da dando erro. AJUDA.
CREATE OR REPLACE PROCEDURE busca_amigo(pqtd IN OUT number)
IS
BEGIN
SELECT COUNT(u.nomeusu) as qtdeamigo
FROM tbusuario u
WHERE u.pkcodusu = tbamigos.fkcodusua
GROUP BY u.pkcodusu
HAVING count(u.nomeusu) >= pqtd;
IF SQL%NOTFOUND
THEN raise_application_error('20013','Nome Invalido!', 'a');
END IF;
END;