[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