[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