Eduardo,

Pode utilizar que funciona muito bem ...
Utilizamos em vários módulos e há muito tempo ...

Sds,

Carlo Pedrine Ceruti Gonçalves
Analista de Sistemas
Empresa Luz e Força Santa Maria S/A
(27)2101-2323 / (27)2101-2327
----- Original Message ----- 
From: "Eduardo Schurtz" <[email protected]>
To: <[email protected]>
Sent: Monday, March 11, 2013 4:49 PM
Subject: Re: [oracle_br] Cursor Dinamico no Oracle Forms


Interessante essa solução Pedrine! Nunca tinha utilizado record group dessa
maneira.


--
Eduardo Schurtz
eduardoschurtz.com/oracle



2013/3/11 Pedrine <[email protected]>

> **
>
>
> Tathianna,
>
> Acredito que vc terá que utilizar record group. Segue abaixo um exemplo :
>
> declare
> w_nr_faturas number;
> w_vl_debitos number;
> w_nr_consumidores number;
> w_sql varchar2(1000);
> w_where varchar2(1000);
> rg_id RecordGroup;
> w_nr_registros Number;
> w_erro Number;
> w_coluna GroupColumn;
> w_linha Number;
>
> begin
> w_sql := 'select sum(nr_faturas_atraso) tot_faturas, ' ||
> ' sum(vl_debito) tot_debitos, ' ||
> ' count(*) tot_consumidores ' ||
> ' from temp_rel_aviso_corte ';
>
> w_where := get_block_property('primeirobloco', default_where);
>
> if w_where is not null then
> w_sql := w_sql || chr(10) || ' where ' || w_where;
> end if;
>
> ----------------------------------------------------------
> -- Verifica a existência do grupo de Registros "totais"
> ----------------------------------------------------------
> rg_id := Find_Group( 'totais' );
>
> if not Id_Null(rg_id) then
> Delete_Group( rg_id );
> end if;
>
> ----------------------------------------------------------
> -- Cria o grupo de Registros "totais"
> ----------------------------------------------------------
> rg_id := Create_Group_From_Query('totais', w_sql);
>
> ----------------------------------------------------------
> -- Verifica se não houve nenhum erro na abertura do grupo de registros
> ----------------------------------------------------------
> w_erro := Populate_Group( rg_id );
>
> if w_erro <> 0 then
> raise form_trigger_failure;
> end if;
>
> ----------------------------------------------------------
> -- Busca o Número de Registros do SQL
> ----------------------------------------------------------
> w_nr_registros := Get_Group_Row_Count( rg_id );
> w_linha := 1;
>
> ----------------------------------------------------------
> -- Abre o SQL e Lê os valores
> ----------------------------------------------------------
> loop
> if w_linha > w_nr_registros then
> exit;
> end if;
>
> ----------------------------------------------------------
> -- Lê os campos da Conta de Energia
> ----------------------------------------------------------
> w_nr_faturas :=
> get_group_number_cell('totais.tot_faturas',w_linha);
> w_vl_debitos :=
> get_group_number_cell('totais.tot_debitos',w_linha);
> w_nr_consumidores :=
> get_group_number_cell('totais.tot_consumidores',w_linha);
>
> :cg$ctrl.p_nr_faturas := w_nr_faturas;
> :cg$ctrl.p_vl_debitos := w_vl_debitos;
> :cg$ctrl.p_nr_consumidores := w_nr_consumidores;
>
> w_linha := w_linha + 1;
> end loop;
>
> end;
>
>
> Carlo Pedrine Ceruti Gonçalves
> Analista de Sistemas
> Empresa Luz e Força Santa Maria S/A
> (27)2101-2323 / (27)2101-2327
> ----- Original Message -----
> From: "Tathyanna Pelegrinni" <[email protected]>
> To: <[email protected]>
> Sent: Monday, March 11, 2013 4:40 PM
> Subject: Re: [oracle_br] Cursor Dinamico no Oracle Forms
>
> Query ficaria enormeeeeee, mas muito grande mesmo.
>
> por isso a tentativa de fazer dinamico....
>
> Mas, acho q nao vai ter jeito mesmo.
>
> 2013/3/11 Eduardo Schurtz <[email protected]>
>
> > **
> >
> >
> > Nesse caso, talvez um union resolva...
> >
> >
> > --
> > Eduardo Schurtz
> > eduardoschurtz.com/oracle
> >
> > 2013/3/11 Tathyanna Pelegrinni <[email protected]>
> >
> > > É q tenho condicoes para selecionar dados de uma tabela. senao é de
> > > outra... e assim vai...
> > >
> > > por isso estava querendo fazer o cursor dinamico, para nao ter 10
> > cursores
> > > muito parecido numa mesma rotina.
> > >
> > > 2013/3/11 Pedrine <[email protected]>
> > >
> > > > **
> >
> > > >
> > > >
> > > > Tathyanna,
> > > >
> > > > Se a query for retornar apenas uma linha, vc não precisa criar um
> > cursor.
> > > > ex:
> > > > ----------------------------------------------------------
> > > > declare
> > > > w_uf varchar2(2);
> > > > begin
> > > > select max(cd_uf)
> > > > into w_uf
> > > > from municipios
> > > > where cd_municipio = 1;
> > > >
> > > > return (w_uf);
> > > > end;
> > > >
> > > > Para o caso de se retornar "n" linhas, tente da seguinte forma :
> > > > ----------------------------------------------------------
> > > > declare
> > > > cursor busca_alunos is
> > > > select cd_aluno, nm_aluno, cd_serie
> > > > from alunos;
> > > >
> > > > w_cd_aluno number;
> > > > w_nm_aluno varchar2(100);
> > > > w_cd_serie number;
> > > >
> > > > begin
> > > > open busca_alunos;
> > > > loop
> > > > fetch busca_alunos into w_cd_aluno, w_nm_aluno, w_cd_serie;
> > > > exit when busca_alunos %notfound;
> > > >
> > > > -- tratamento das informações
> > > >
> > > > end loop;
> > > > close busca_alunos;
> > > > end;
> > > >
> > > > Espero ter ajudado,
> > > >
> > > > Quaisquer dúvidas, meu email [email protected].
> > > >
> > > > Sds,
> > > >
> > > >
> > > > Carlo Pedrine Ceruti Gonçalves
> > > > Analista de Sistemas
> > > > Empresa Luz e Força Santa Maria S/A
> > > > (27)2101-2323 / (27)2101-2327
> > > > ----- Original Message -----
> > > > From: "Tathyanna Pelegrinni" <[email protected]>
> > > > To: <[email protected]>
> > > > Sent: Monday, March 11, 2013 3:55 PM
> > > > Subject: Re: [oracle_br] Cursor Dinamico no Oracle Forms
> > > >
> > > > Forms 10.1.2.0.2 ... 32 bits.
> > > >
> > > > É numa program unit, sim.
> > > >
> > > > Queria um exemplo bem bobo, só pra ver como funciona.
> > > > A query a ser montada sempre vai retornar uma linha somente. E 
> > > > sempre
> > uma
> > > > coluna tb! é bem simples. Pena q o ref cursor nao funciona. Diz q o
> > > recurso
> > > > nao é aceito em programas do lado do cliente.
> > > >
> > > > 2013/3/11 Pedrine <[email protected]>
> > > >
> > > > > **
> > > >
> > > > >
> > > > >
> > > > > Tathyanna,
> > > > >
> > > > > Por favor, qual a versão do su forms ? Explique melhor como vc 
> > > > > está
> > > > > querendo executar este "cursor dinâmico" ? É numa "program unit" ?
> É
> > > para
> > > > > popular um bloco ?
> > > > >
> > > > > Estou à disposição para ajudá-la,
> > > > >
> > > > > Carlo Pedrine Ceruti Gonçalves
> > > > > Analista de Sistemas
> > > > > Empresa Luz e Força Santa Maria S/A
> > > > > (27)2101-2323 / (27)2101-2327
> > > > >
> > > > > ----- Original Message -----
> > > > > From: Tathyanna Pelegrinni
> > > > > To: Tathyanna Pelegrinni
> > > > > Sent: Monday, March 11, 2013 3:26 PM
> > > > > Subject: [oracle_br] Cursor Dinamico no Oracle Forms
> > > > >
> > > > > Boa tarde, Pessoal!
> > > > >
> > > > > Alguem já precisou fazer um cursor dinamico no Forms Builder?
> > > > > Nunca pensei q precisaria, mas,,, chegou o dia!
> > > > > Alguem sabe como fazê-lo? Tem um exmplo simples?
> > > > >
> > > > > Esse abaixo funciona somente em proc. de banco e nao no forms.
> > > > >
> > > > > Como faria no forms?
> > > > >
> > > > > -- Declaracao
> > > > >
> > > > > type cur is ref cursor;
> > > > > cur_total cur;
> > > > > w_sql varchar2(10000);
> > > > > w_var number;
> > > > >
> > > > > -- Corpo do programa
> > > > >
> > > > > w_sql := ' SELECT 1 FROM DUAL';
> > > > >
> > > > > OPEN cur_total FOR w_sql;
> > > > > FETCH cur_total INTO w_var;
> > > > > CLOSE cur_total ;
> > > > >
> > > > > Obrigada.
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > > ------------------------------------
> > > >
> > > >
> > > > ----------------------------------------------------------
> > > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > > > inteira
> > > > >responsabilidade de seus remetentes.
> > > > Acesse: http://www.mail-archive.com/[email protected]/
> > > > ----------------------------------------------------------
> > > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > > > >Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> > > > ESPAÇO!
> > > > >VISITE: http://www.oraclebr.com.br/
> > > > ----------------------------------------------------------
> > > > Links do Yahoo! Grupos
> > > >
> > > >
> > > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > >
> > > ----------------------------------------------------------
> > > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > > inteira responsabilidade de seus remetentes.
> > > Acesse: http://www.mail-archive.com/[email protected]/
> > >
> > > ----------------------------------------------------------
> > > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> > ESPAÇO!
> > > VISITE: http://www.oraclebr.com.br/
> > > ----------------------------------------------------------
> > > Links do Yahoo! Grupos
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> ------------------------------------
>
> ----------------------------------------------------------
> >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira
> >responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/[email protected]/
> ----------------------------------------------------------
> >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> >Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> ESPAÇO!
> >VISITE: http://www.oraclebr.com.br/
> ----------------------------------------------------------
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » 
>Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! 
>VISITE: http://www.oraclebr.com.br/
------------------------------------------------------------------------------------------------------------------------
 
Links do Yahoo! Grupos





Responder a