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
