[firebase-br] OFF - Firebird x Oracle

Reuber jubrovolski em yahoo.com.br
Qua Fev 13 17:32:45 -03 2008


Boa tarde Marcos

Obrigado pela dica.

Vou tentar implementá-la no meu caso.

Fico admirado por falarem tanto que o oracle é o melhor banco. Onde se 
viu não ter "FOR SELECT"? rss

Acredito que esse recurso é um dos mais interessantes que há no 
Firebird, sem contar a facilidade de aprendizado.

Não vejo a hora do Firebird poder competir em igualdade aos bancos de se 
dizem "bam-bam-bam'.

Reuber



Marcos Silva escreveu:
> Reuber,
> 
> Já hávia postado uma resposta tua no forum de oracle, mas participo deste
> também, só vi agora que a pergunta está aqui. Abaixo tem uma esplicação de
> como fazer uma procedure selecionavel e como seleciona-la no oracle. Até
> mais, espero ter ajudado.
> 
> 
> CREATE OR REPLACE TYPE TickerType AS OBJECT (
> ticker    VARCHAR2(4),
> pricetype VARCHAR2(1),
> price     NUMBER(10));
> /
> 
> CREATE OR REPLACE TYPE TickerTypeSet AS TABLE OF TickerType;
> /
> 
> CREATE OR REPLACE FUNCTION stockpivot()
> RETURN TickerTypeSet PIPELINED IS
> 
> out_rec  TickerType := TickerType(NULL,NULL,NULL);
> 
> BEGIN
>   LOOP
> 
>     EXIT WHEN condicao;
> 
>     out_rec.ticker := in_rec.Ticker;
>     out_rec.pricetype := 'O';
>     out_rec.price := in_rec.Open_Price;
>     PIPE ROW(out_rec);
> 
>   END LOOP;
>   CLOSE p;
>   RETURN;
> END stockpivot;
> /
> 
> SELECT * FROM TABLE(stockpivot());
> 
> Referência.  http://www.psoug.org/reference/pipelined.html
> 
> 
> Se você tiver trabalhando com java existe outra forma de fazer isso, e
> retornar em um ResultSet sem precisar criar tantos objetos, retornar um
> cursor, mas aí teria que buscar nos meus arquivos.
> 
> Até,
> 
> Marcos Silva
> 
> Em 11/02/08, Reuber <jubrovolski em yahoo.com.br> escreveu:
>> Renato, consegui criar a procedure.
>>
>> só mais uma pergunta. Como executo essa procedure para que me retorne os
>> dados que preciso?
>>
>> Vou ter que retornar estas informações em um dbgrid do Delphi via
>> dbexpress.
>>
>> Renato Deggau escreveu:
>>
>>> Reuber,
>>>
>>> eu tive exatamente a sua situação e a solução que adotei foi a seguinte:
>>> - criei uma tabela temporaria no oracle (uma tabela para cada procedure,
>> com
>>> a estrutura de resultado desejada)
>>> - e na criação da procedure fiz assim;
>>>
>>> PROCEDURE REL_CONSULTASEFETUADAS(pDatainicial in date, pdatafinal in
>> date,
>>> resultado OUT retorno_procedure)
>>> AS
>>>  cursor ordem1 is
>>>   select trunc(l.dataconsulta) as dataconsulta, count(l.codqualificador)
>> as
>>> atendidas
>>>   from LOGCONSULTAS l
>>>   where l.dataconsulta between pdatainicial and pdatafinal
>>>   group by l.dataconsulta;
>>>  total        integer;
>>>  naoatendidas integer;
>>>  mcomando       varchar2(2000);
>>> BEGIN
>>>  for rec in ordem1
>>>   loop
>>>    naoatendidas := 0;
>>>    total        := rec.atendidas + naoatendidas;
>>>    mcomando     := 'insert into temp_consultasefetuadas values
>>> ('''||to_char(rec.dataconsulta,'dd/mm/yyyy')||''','||
>>>
>>> rec.atendidas||','||
>>>
>>> naoatendidas||','||
>>>
>>> total||')';
>>>    execute immediate mcomando;
>>>   end loop;
>>>  open resultado for select * from temp_controledecimais;
>>> END REL_CONSULTASEFETUADAS;
>>>
>>>
>>> Renato Deggau
>>>
>>> 2008/2/11 Reuber <jubrovolski em yahoo.com.br>:
>>>
>>>> bom dia pessoal
>>>>
>>>> Utilizo o Firebird em minhas aplicações já há algum tempo, porém
>> preciso
>>>>  gerar informações de outro sistema cuja base é oracle. As informações
>>>> que vou precisar, somente serão possíveis através de uma store
>> procedure.
>>>> Ai é que vem o problema. Em firebird em consigo fazer um "FOR SELECT" e
>>>> a cada linha processada eu consigo "manipular" as informações da forma
>>>> que preciso e no final basta dar um "select * from nomeprocedure" e
>>>> "tum". Os dados são gerados.
>>>>
>>>> Alguém sabe como fazer isso em oracle?
>>>>
>>>>
>>>> Reuber
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista