Você tem que fazer 2 select COUNT.
Algo assim:
Selecionar tudo
SELECT COUNT(*)
INTO v_qtd_não_lida
FROM tbmensagem
WHERE fkcodusdestino = PARAMETRO_CODIGO_DO_USUARIO
AND statuslida = 0 ;
Sobre quem é amigo de quem, acho que não está bem explicado esse ER.
Por exemplo, digamos que eu solicitei um pedido de amigo e ele aceitou.
Na tabela TBAMIGOS vai estar como ?
Imagino que no primeiro campo vai ter MEU CODIGO e depois CODIGO_DO_AMIGO.
Mas se um amigo solicitou minha amizade, vai ter O_CODIGO_DELE no primeiro campo, e o MEU_CODIGO no segundo.
Se é assim, tem que contar quantidade nos 2 campos.
Algo assim:
Selecionar tudo
SELECT COUNT(*)
INTO v_qtd_amigos_ativos
FROM TBAMIGOS
WHERE bloqueado=0
and ( fkcodusuA = MEUCODIGO
or fkcodusuB = MEUCODIGO )
Dai basta colocar isso dentro de uma procedure.