My solution with Interbase is attached.
Then, I do a SQL like this:
Select * From SPResConsulta(0,4,1,1)
Where CodSublinha = 1
And (CodGen >= 10 And CodGen <= 20)
where the numbers showed explicitly may
be parameters when generating the SQL
into Java/Delphi/... code.
[
interbase.txt 3K ]
======================================================================
CREATE VIEW VWPRECOPRODUTO(
CODFORN,
CODLOJA,
CODPRODUTO,
CODFORMAPAGTO,
PRECO,
PROM,
DATAFIMPROM)
AS
Select CodForn,CodLoja,CodProduto,CodFormaPagto,
(Preco+Preco*ICMS/100+Preco*IPI/100),Prom,DataFimProm
From PrecoProduto;
======================================================================
create view VWResConsulta
(CodProduto, FotoProduto, Descricao, DescricaoPsq,
Detalhe, DetalheChave, EspecTec, EspecTecChave,
CodInterno, Preco, DataFimProm,
CodSublinha, FotoSublinha, DescrSublinha,
CodLinha, FotoLinha, DescrLinha,
CodForn, T1CodLingua, T4CodLingua, T6CodLingua, CodLoja, CodFormaPagto)
as
Select T1.CodProduto, Substr(T2.Foto,1,256) FotoProduto,
T1.Descricao, T1.DescricaoPsq,
T1.Detalhe, T1.DetalheChave,
T1.EspecTec, T1.EspecTecChave,
T2.CodInterno, VW2.Preco, VW2.DataFimProm,
T3.CodSublinha, Substr(T3.Foto,1,256) FotoSublinha, T4.Descricao DescrSublinha,
T5.CodLinha, Substr(T5.Foto,1,256) FotoLinha, T6.Descricao DescrLinha,
T1.CodForn, T1.CodLingua, T4.CodLingua, T6.CodLingua, VW2.CodLoja, VW2.CodFormaPagto
From ProdutoLingua T1, Produto T2, VWPrecoProduto VW2,
Sublinha T3, SublinhaLingua T4, Linha T5, LinhaLingua T6
Where T2.CodForn = T1.CodForn
And T2.CodProduto = T1.CodProduto
And VW2.CodForn = T2.CodForn
And VW2.CodProduto = T2.CodProduto
And T3.CodForn = T2.CodForn
And T3.CodSublinha = T2.CodSublinha
And T4.CodForn = T3.CodForn
And T4.CodSublinha = T3.CodSublinha
And T5.CodForn = T3.CodForn
And T5.CodLinha = T3.CodLinha
And T6.CodForn = T5.CodForn
And T6.CodLinha = T5.CodLinha
======================================================================
CREATE GENERATOR GEN_RESCONSULTA;
======================================================================
create procedure SPResConsulta
(PCodLingua integer, PCodForn integer, PCodLoja integer, PCodFormaPagto integer)
returns
(CodGen integer, CodProduto integer, FotoProduto integer,
Descricao varchar(70), DescricaoPsq varchar(70),
Detalhe varchar(250), DetalheChave varchar(250),
EspecTec varchar(800), EspecTecChave varchar(250),
CodInterno varchar(30), Preco numeric(15,4), DataFimProm date,
CodSublinha integer, FotoSublinha varchar(256), DescrSublinha varchar(50),
CodLinha integer, FotoLinha varchar(256), DescrLinha varchar(50))
as
begin
for
Select Gen_Id(Gen_ResConsulta,1),
CodProduto, FotoProduto,
Descricao, DescricaoPsq,
Detalhe, DetalheChave,
EspecTec, EspecTecChave,
CodInterno, Preco, DataFimProm,
CodSublinha, FotoSublinha, DescrSublinha,
CodLinha, FotoLinha, DescrLinha
From VWResConsulta
Where T1CodLingua = :PCodLingua
And CodForn = :PCodForn
And CodLoja = :PCodLoja
And CodFormaPagto = :PCodFormaPagto
And T4CodLingua = :PCodLingua
And T6CodLingua = :PCodLingua
Order By DescrLinha, DescrSublinha, Descricao
Into :CodGen,
:CodProduto, :FotoProduto,
:Descricao, :DescricaoPsq,
:Detalhe, :DetalheChave,
:EspecTec, :EspecTecChave,
:CodInterno, :Preco, :DataFimProm,
:CodSublinha, :FotoSublinha, :DescrSublinha,
:CodLinha, :FotoLinha, :DescrLinha
do
suspend;
end;