[firebase-br] Problemas com SP - Urgênte

Fernando Ricardo Vito Aquilini fernando.aquilini em terra.com.br
Seg Dez 20 21:49:09 -03 2004


Olá todos da lista.

Sou novo no que diz respeito a criação de SP no FB.

Meu problema é o seguinte:

Tenho uma tabela PESSOAS, com a seguinte estrutura
CODIGO	NOME
1		PAULO
2		CARLOS
3		JOÃO

Uma tabela SOFTWARES
CODIGO	DESCRICAO
1		LINUX
2		DELPHI
3		OFFICE

E uma tabela RELACAO, que é um relacionamento muitos-para-muitos das duas
tabelas anteriores
CODPES	CODSOFT
1		1
1		2
2		1
2		3
3		1

Quando executo
select A.NOME, B.DESCRICAO
from PESSOAS A, SOFTWARES B, RELACAO C
where A.CODIGO=C.CODPES AND B.CODIGO=C.CODSOFT

o FB me retorna a seguinte consulta:
PESSOA	SOFTWARE
PAULO		LINUX
PAULO		DELPHI
CARLOS	LINUX
CARLOS	OFFICE
JOÃO		LINUX

Até aí, minha estrutura parece estar OK e minha consulta também funcionando
corretamente.

Mas o meu problema é que preciso retornar a seguinte consulta:
PESSOA	SOFTWARE
PAULO		LINUX; DELPHI
CARLOS	LINUX; OFFICE
JOÃO		LINUX

Para isso, tentei criar a seguinte SP:
begin 
  /* Procedure Text */ 
  select count(CODSOFT) 
    from RELACAO 
    where (CODPES=:CODIGO) 
    into :CONTADOR; 
  I = 1; 
  NOME_SOFTWARES = ''; 
  while (I <= CONTADOR) do 
    begin 
      select b.SOFTWARE[:I] 
        from RELACAO a, SOFTWARES b 
        where (a.CODPES=:CODIGO) 
        and   (a.CODSOFT=b.CODIGO) 
        into :NOME_SOFTWARE; 
    end 
    NOME_SOFTWARES = NOME_SOFTWARES + NOME_SOFTWARE; 
    I = I+1; 
  suspend; 
end 

O FB compila a SP mas na hora de criar, ele me retorna a seguinte mensagem
de erro: Unsuccessful execution caused by a system error that precludes 
successful execution of subsequent statements. 
Dynamic SQL Error. 
expression evaluation not supported.

Por favor, alguém sabe o motivo desse erro?
Alguém já teve algum problema parecido e tem alguma solução mais fácil para
isso?

Agradeço a atenção, um abraço a todos.

Atenciosamente
Fernando Aquilini






Mais detalhes sobre a lista de discussão lista