[firebase-br] RES: Problema com o select

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


estou quase resolvendo

Usando FOR SELECT e DO
O exemplo anterior do comando SELECT que seleciona um ou mais valores 
para uma
variável é bom desde que o SELECT retorne apenas uma linha. Quando 
precisar processar
varias linhas retornadas por um SELECT você deverá usar o comando FOR 
SELECT e DO
como mostrado a seguir:
CREATE PROCEDURE ORDER_LIST(
CUST_NO INTEGER
)
RETURNS (
PO_NUMBER CHAR(8)
)
AS
BEGIN
FOR SELECT PO_NUMBER FROM SALES
WHERE CUST_NO=:CUST_NO
INTO :PO_NUMBER
DO
SUSPEND;
END ^
Esta procedure pega um código de cliente de seu parâmetro de entrada e 
retorna os
números de todas as compras do cliente da tabela SALES (vendas). Observe 
que os
números das vendas são todos retornados através de uma única variável de 
saída. Veja
como isso funciona: A palavra chave FOR diz paro o Firebird abrir um 
cursor no conjunto de
resultados (result set) do comando SELECT. O comando SELECT tem que 
incluir a cláusula
INTO que atribui cada campo retornado pelo SELECT a uma variável local 
ou parâmetro de
saída. O comando após a palavra chave DO é executado para cada linha 
retornada pelo
SELECT. O comando após o DO pode ser um bloco de comandos delimitado por 
um BEGINEND.

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
>
>   




Mais detalhes sobre a lista de discussão lista