[firebase-br] Como concatenar o valor de varios registros em um só? (Resolvido)

Claudir Pereira dos Santos claupers_dbrays em yahoo.com.br
Sex Nov 10 09:04:45 -03 2006


Valeu pelas dicas jeferson, quanto a estrutura da procedure ela ficou um
pouco diferente para o Iboconsole e para o ibexpert. A saber:
palavras chaves: procedure, SP, IboConsole, Ibexpert, criando procedure no
firebird (só para facilitar uma busca futura)

No iboconsole ficou assim:
set term ^;
CREATE PROCEDURE SP_TBLAUOBSTECCONCAT4(
    SP_NUMATE INTEGER)
RETURNS (
    LISTA VARCHAR(1024) CHARACTER SET NONE)
AS
declare variable AUX varchar(20);
begin
  Lista = '';
  for select L.Lau_ObsTec from Tb_lau L where L.Lau_NumAte = :Sp_NumAte
      into :AUX do
    Lista = :Lista || '-' || :Aux;
  update tb_lau set Lau_ObsTecConcat  = :Lista where Lau_numate =
:Sp_NumAte;
  suspend;
end^
set term ;^
----------------------------------------------------------------------------
-----------------------
No Ibexpert ficou assim:

CREATE PROCEDURE SP_TBLAUOBSTECCONCAT4(
    SP_NUMATE INTEGER)
RETURNS (
    LISTA VARCHAR(1024) CHARACTER SET NONE)
AS
declare variable AUX varchar(20);
begin
  Lista = '';
  for select L.Lau_ObsTec from Tb_lau L where L.Lau_NumAte = :Sp_NumAte
      into :AUX do
    Lista = :Lista || '-' || :Aux;
  update tb_lau set Lau_ObsTecConcat  = :Lista where Lau_numate =
:Sp_NumAte;
  suspend;
end


Postei isso, pois caso alguém futuramente faça uma busca no google sobre o
caso possa encontrar aqui.

Cordialmente;


Claudir P. Santos
T.I.

----------------------------------------------------------------------------
-----
Gostei do resultado.
Mas, sem entrar em detalhes da regra de negócio de sua aplicação, me
parece redundante armazenar a lista das observações do cliente a cada
registro. Se o campo da lista é "calculado" e, consequentemente, de
somente leitura, eu recomendaria utilizar uma VIEW que exibisse a
tabela e a lista, evitando assim carga de dados desnecessária


> A partir de agora vou passar a usar procedures com mais frequencia

Use com moderação.
É um recurso muito útil, mas se usado em excesso pode comprometer a
performance do banco de dados, além de prejudicar a organização dos
seus projetos.
Recomendo sempre que os resultados precisam ser utilizados dentro do
banco (como o seu caso atual) ou em cálculos pesados, para dar mais
agilidade.


Abraço!
Jeferson Oliveira

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista