[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