[firebase-br] Problema com o select

Jeudí Prando jeudiprando em gmail.com
Sex Ago 11 12:07:00 -03 2006


nao tem nada de errado desta vez, só documentei para que todos possam 
entender e ajudar caso precise

--select * from retorna_endereco(1)
CREATE PROCEDURE RETORNA_ENDERECO
(
       pi_codigo integer   -- codigo do produto, parametro de entrada
)
returns
(
       po_codigo integer,  -- codigo do endereco, parametro de saida
       po_nome varchar(60) -- nome do endereco, parametro de saida
)
as
  DECLARE VARIABLE vrNome varchar(60);    -- variavel para uso interno, 
filtrar registros no SQL1
begin
     for                                  -- for para retornar os 
endereco caso mais de um registro seja retornado
         select                           -- select que retorna um ou 
mais de
             e2.nm_descricao_end          -- um inicio de endereco
         from                             -- SQL2
             produto_endereco pe, endereco e2
         where
             pe.id_produto = :pi_codigo and
             pe.id_end = e2.id_end
         into :vrNome
     do
     begin
         for                             -- FOR para retornar cada linha 
de endereco e nao so a ultima
             select                      -- select que retorna todos os 
endereco
                 e.id_end,               -- de acordo com cada linha de 
inicio
                 e.nm_descricao_end      -- de endereco retornado no 
selec anterior
             from                        -- SQL1
                 endereco e
             where
                  e.nm_descricao_end like :vrNome||'%'
             into :po_codigo, :po_nome
          do
          suspend;                        -- para nao retornar somente o 
ultimo valor
     end
end

lembrando:

# utilize o where em cima da PK ou FK ou algum indice mais especifico 
para o mesmo

# utilize inner join no SQL2:

         select                          
             e2.nm_descricao_end
         from                            
             produto_endereco pe
         inner join endereco e2 on
             e2.id_end = pe.id_end
         where
             pe.id_produto = :pi_codigo and
            

boa sorte!




Mais detalhes sobre a lista de discussão lista