Apenas para completar se são mutualmente exclusiva utilize UNION ALL. Caso seja 
possível inclua no WHERE :Global.selecao = 1 no SELECT , :Global.selecao = 
2.... a assim por adiante. Para o  UNION somente há necessidade de ordernação 
para o "DISTINCT ". 

Verifique também a possibilidade de criação de uma GTT(global temporary table) 
contendo esta seleção, e mais algumas informações para um join, podendo assim 
criar uma view, limpando seu código. 



Att. 

Sérgio. 


----- Mensagem original -----

De: "J. Laurindo Chiappa" <jlchia...@yahoo.com.br> 
Para: "oracle br" <oracle_br@yahoogrupos.com.br> 
Enviadas: Segunda-feira, 11 de Março de 2013 17:31:57 
Assunto: [oracle_br] Re: Cursor Dinamico no Oracle Forms 

  



Hmm, Tathyanna , deixe-me adivinhar : provavelmente vc deve ter aí aquela 
modelagem ** maravilhosa **, aonde a informação pode estar na tabela A ou na 
tabela B ou na tabela C, assim por diante, e só fazendo o SELECT pra saber se 
está em uma delas ou não ??? 
SE for isso, eu sou +1 pelo UNION ao invés de SQL dinâmico, DESDE QUE a qtdade 
e datatype das colunas das diferentes tabelas seja compatível... Seria tipo : 

SELECT coluna1, coluna2,...colunaN FROM tabelaA WHERE condições 
UNION 
SELECT coluna1, coluna2,...colunaN FROM tabelaB WHERE condições 
UNION 
SELECT coluna1, coluna2,...colunaN FROM tabelaC WHERE condições 
..... 

Sabe Deus a performance que vc vai obter acessando tantas tabelas sem 
"necessidade", mas a opção existe.... 

[]s 

Chiappa 

--- Em oracle_br@yahoogrupos.com.br , Tathyanna Pelegrinni <tathyanna@...> 
escreveu 
> 
> 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 <eduardo.schurtz@...> 
> 
> > ** 
> > 
> > 
> > Nesse caso, talvez um union resolva... 
> > 
> > 
> > -- 
> > Eduardo Schurtz 
> > eduardoschurtz.com/oracle 
> > 
> > 2013/3/11 Tathyanna Pelegrinni <tathyanna@...> 
> > 
> > > É 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 <pedrine.oracle@...> 
> > > 
> > > > ** 
> > 
> > > > 
> > > > 
> > > > 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 pedrine@... 
> > > > 
> > > > 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" <tathyanna@...> 
> > > > To: < oracle_br@yahoogrupos.com.br > 
> > > > 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 <pedrine.oracle@...> 
> > > > 
> > > > > ** 
> > > > 
> > > > > 
> > > > > 
> > > > > 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/oracle_br@yahoogrupos.com.br/ 
> > > > ---------------------------------------------------------- 
> > > > >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/oracle_br@yahoogrupos.com.br/ 
> > > 
> > > ---------------------------------------------------------- 
> > > >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] 
> 


 


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

Responder a