[firebase-br] RES: Problema com o select

Jeudí Prando jeudiprando em gmail.com
Sex Ago 11 11:34:24 -03 2006


o acerto postei errado creio eu

tome o meu como exemplo

--select * from retorna_endereco(1)
ALTER PROCEDURE RETORNA_ENDERECO
(
       pi_codigo integer   -- codigo do produto, parametro de entrada
)
returns
(
       po_codigo integer,  -- codigo do endereco, parametro de saida
       po_codigoNome varchar(60), -- codigo que na verdade é um nome 
codificado, parametro de saida
       po_nome varchar(60) -- nome do endereco, parametro de saida
)
as
  DECLARE VARIABLE vrNome varchar(60);    -- variavel para uso interno
begin
     for
        select
            SC_PLNCT.CODIGO_CONTABIL
        from
            sc_plnct
        where
             SC_PLNCT.CODIGO_FILIA = 1 and -- campo da chave primaria
             SC_PLNCT.CODIGO_CONTABIL = :pi_codigo
        into :vrNome
     do
     begin
          select
              SC_PLNCT.CODIGO_PLNCT,
              SC_PLNCT.CODIGO_CONTABIL,
              SC_PLNCT.NOME_PLNCT
          from
              SC_PLNCT
          where
               SC_PLNCT.CODIGO_FILIA = 1 and -- campo da chave primaria
               SC_PLNCT.CODIGO_CONTABIL like :vrNome||'%'
          into :po_codigo, :po_codigoNome, :po_nome;
          suspend;
     end
end


Pablo Cunha escreveu:
> Isso mesmo, neste exemplo que eu lhe envie na parte de cima eu escrevi 
> errado, é C1 mesmo, ai estou mandando novamente o correto.
>
> NM_DESCRICAO_END
> ==================
> A
> B1
> C1.02.020
> D.01.009
>
> Então baseado neste "Select 2" eu tenho que buscar todos endereços que
> iniciam com o resultado. Seria mais ou menos assim:
>
> ID_END        NM_DESCRICAO_END
> ======        ==================
> 1                    A.01.009.01.07
> 2                    A.02.054.03.08
> 3                    A.06.098.05.07
> 87                  B1.09.058.98.69
> 88                  B1.06.014.65.75
> 310                C1.02.020.01.65
> 315                C1.02.020.06.98
> 654                D.01.009.07.09
> 655                D.01.009.45.10
> 656                D.01.009.58.15
>
>
>
> ----- Original Message ----- From: "Jeudí Prando" <jeudiprando em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Friday, August 11, 2006 11:00 AM
> Subject: Re: [firebase-br] RES: Problema com o select
>
>
> tenho 1% de duvida
> C.02.020
> deveria ser
> C1.02.020
> ?
> talvez procedure utilizando o recurso de cursor possa te ajudar estou
> olhando...
>
> Roger escreveu:
>> Novamente ...
>> Aliás relembrando melhor, optei pela Procedure, pois
>> o processamento ficou muito mais rápido, e a outra solução
>> que eu tinha chegado era usar um "IN" (não sei se no seu caso
>> poderia substituir o like por isso).
>>
>> select blá blá where e.nm_descricao_end IN (select blá bl ...)
>>
>>
>>
>>
>> Olá Pablo, bom dia !!
>>
>> Por coincidência, ontem mesmo deparei com esta mesma mensagem.
>> Não consegui resolver de outra maneira, senão através de uma Procedure.
>> Se por acaso houver outra solução, ou uma explicação para isto...
>>
>> Espero ter lhe dado um caminho ...
>>
>>
>> []´s Roger
>>
>>
>> -----Mensagem original-----
>> De: lista-bounces em firebase.com.br
>> [mailto:lista-bounces em firebase.com.br]Em nome de Pablo Cunha
>> Enviada em: sexta-feira, 11 de agosto de 2006 09:54
>> Para: jeudiprando em gmail.com; FireBase
>> Assunto: Re: [firebase-br] Problema com o select
>>
>>
>> O "SQL 2" pode retornar sim mais de um registro, ou seja, é esperado.
>>
>>
>>
>> ----- Original Message -----
>> From: "Jeudí Prando" <jeudiprando em gmail.com>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Friday, August 11, 2006 9:52 AM
>> Subject: Re: [firebase-br] Problema com o select
>>
>>
>> o fato do SQL2 retornar mais de uma registro é inesperado(é o que vc nao
>> quer)? ele deveria retornar somente um? ou o fato de o SQL2 retornar
>> mais de um registro é esperado
>> inté+
>> Pablo Cunha escreveu:
>>
>>> Bom Dia a todos, é o seguinte amigo, eu tenho um select que me 
>>> retorna o
>>> nome de um endereço (chamarei este select de "select 2") e um outro que
>>> utiliza o Like que me retorna todos os endereços que começam com o 
>>> que o
>>> "select 2" retornou. Até ai tudo bem, só que se o "select 2" retorna 
>>> mais
>>> de 1 registro ele dá o erro de "Multiple Rows in Singleton Select". 
>>> Só que
>>> eu tenho que ter todos os endereços de uma vez só. Como que eu 
>>> resolveria
>>> isto?
>>>
>>> select e.id_end
>>> from endereco e
>>> where e.nm_descricao_end like (
>>> (
>>> select e2.nm_descricao_end
>>> from produto_endereco pe,
>>>      endereco e2
>>> where pe.id_produto = 295
>>> and pe.id_end = e2.id_end
>>> )
>>> ||'%')
>>> ______________________________________________
>>> 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
>>>
>>>
>>>
>>
>> ______________________________________________
>> 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
>>
>>
>> -- 
>> No virus found in this incoming message.
>> Checked by AVG Free Edition.
>> Version: 7.1.405 / Virus Database: 268.10.9/416 - Release Date: 
>> 10/8/2006
>>
>>
>>
>>
>>
>> _______________________________________________________
>> O Yahoo! está de cara nova. Venha conferir!
>> http://br.yahoo.com
>>
>>
>> ______________________________________________
>> 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
>>
>> --------------------------------------------------
>> Esta mensagem foi verificada por Ultralink-Scanner
>> e nenhum virus foi encontrado.
>>
>> Web Server Ultralink: http://www.ultralink.com.br
>> --------------------------------------------------
>>
>>
>>
>>
>>
>> --------------------------------------------------
>> Esta mensagem foi verificada por Ultralink-Scanner
>> e nenhum virus foi encontrado.
>>
>> Web Server Ultralink: http://www.ultralink.com.br
>> --------------------------------------------------
>>
>>
>> ______________________________________________
>> 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
>>
>>
>
> ______________________________________________
> 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