SP For...do dentro de outro For...do amp;#8211; como fazer

Firebird

24/08/2004

Preciso mostrar o seguinte resultado, sem usar tabela temporaria:
Código, descrição, valor cobrado, valor pago.

Sendo que código e descrição estão na tabela 01, Valor cobrado está na tabela 02 e valor Pago na Tabela 03.
Sendo as chave entre as 3 tabelas a coluna código.
O que preciso fazer é o seguinte:
Selecionar todos os registros da tabela 01, passar o código como parâmetro, para o segundo for...do pesquisar na tabela 02 e me retornar o valor cobrado. Depois, passar o código como parâmetro, para o terceiro for...do pesquisar na tabela 03 e me retornar o valor pago. E assim sucessivamente até o final da tabela 01.

No momento consigo fazer isto, utilizando 03 Stored Procedures, quero saber como fazer isso dentro de uma única.

Dentro do Delphi eh fácil, mas preciso em uma Única Stored procedure.

Utilizo o Delphi 7 com Firebird 1.5


Rrsoft

Rrsoft

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

24/08/2004

Tu pode colocar laços FOR.. DO um dentro do outro numa procedure. Ex:

FOR SELECT campo_nome FROM tabela 1 INTO :nome DO
FOR SELECT campo_chave FROM tabela2 WHERE campo_nome = :nome INTO :chave DO

e assim por diante...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/08/2004

não seria mais fácil fazer uma única instrução SQL? não sei se entendi direito, mas acho que poderia ser assim:

FOR select T1.Codigo, T1.Descricao, T2.ValorCobrado, T3.ValorPago
from Tabela1 T1
left join Tabela2 T2 on (T2.Codigo = T1.Codigo)
left join Tabela3 T3 on (T3.Codigo = T1.Codigo)
INTO :Codigo, :Descricao, :ValorCobrado, :ValorPago
DO Suspend;

e, particularmente, eu utilizaria somente a instrução. eu não utilizaria uma SP.


GOSTEI 0
POSTAR