[firebase-br] SELECT com UNION estilo ORACLE

Joao de Lima jomello_fire em yahoo.com.br
Qua Set 29 16:05:57 -03 2004


Grande Nilton :-)
Valeu mano, é eu já estou fazendo da segunda forma via SP acho que vai dar direitinho, por que preciso "trabalhar" justamente a qde de estoque :-)
Faltava para eu aquele pedaço final do Begin if  (estoq > 10) then end, o cabeção aqui não achava a sintaxe correta :-)
 
Abraços
 
    João

Nilton Souza <ntn em bbs2.sul.com.br> wrote:
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" 
To: 

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
>


______________________________________________
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

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Mais detalhes sobre a lista de discussão lista