[firebase-br] SELECT com UNION estilo ORACLE

Nilton Souza ntn em bbs2.sul.com.br
Qua Set 29 15:49:19 -03 2004


Olá João,

O FB não suporta "consultas sobre resultados de uma consultas", pelo menos
por enquanto, lembro de ter visto isso no RoadMap da próxima versão. Uma
saída seria você criar uma STORED PROCEDURE que retorne um cursor um uma
VIEW, ficaria mais ou menos assim:


create view vw_UnionEstoque(Estoq, Producao) as
select estoq, 0 producao from tab1
union
select 0 estoq, producao from tab2;

daí vc usa a view assim:
select sum(estoq), sum(producao) from vw_UnionEstoque;


outra saída seria vc criar uma STORED PROCEDURE assim:


set term !! ;
create or alter procedure sp_UnionEstoque
returns(estoq double precision, producao double precision) /* mude o double
precision para o tipo correto */
as
begin
  for
    select estoq, 0 producao from tab1
    union
    select 0 estoq, producao from tab2
    into :estoq, :producao
  do
  begin
    /*
    aqui vc pode mudar o valor para cada registro caso queira

    exemplo:
      if (estoq > 10) then
        estoq = 20;
    */

    suspend;
  end
end !!
set term ; !!

daí vc usa a sp assim:
select sum(estoq), sum(producao) from sp_UnionEstoque;





[]'s
Nilton Souza

----- Original Message -----
From: "Joao de Lima" <jomello_fire em yahoo.com.br>
To: <lista em firebase.com.br>
Sent: Wednesday, September 29, 2004 3:06 PM
Subject: [firebase-br] SELECT com UNION estilo ORACLE


> Olá amigos,
> Acho que estou desaprendendo a programar :-)
> Alguem sabe como e se é possivel fazer um SELECT como esse no FIREBIRD:
>
> SELECT SUM(ESTOQ), SUM(PRODUCAO)
> (
>   SELECT ESTOQ, 0 PRODUCAO
>   FROM tab1
>   UNION
>   SELECT 0 ESTOQ, PRODUCAO
>   FROM tab2
> )
>
> Eu sei que se eu colocar somente a UNION funciona, mas preciso trabalhar
com os resultados de cada SELECT ok :-)
> Ja tentei de tudo mas como não conheço todos os COMANDOS e FUNÇÕES do
FIREBIRD não sei como resolver esse problema :-(
>
> Desde já agradeço
>
> Abraços
>
>      João
>
>
> ---------------------------------
> Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
> ______________________________________________
> FireBase-BR (www.firebase.com.br)
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>





Mais detalhes sobre a lista de discussão lista