Cursor Dinâmico

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
alexsbraga
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 29 Ago 2012 11:44 am

Pessoal,

Estou com a seguinte dúvida/problema: Tenho dois cursores declarados C_Saldo1 e C_Saldo_2, mais só usarei 1, dependendo de um determinado parâmetro que minha procedure receberá. Quero trabalhar com o cursor a ser usado de forma implícita, usando FOR LOOP.
Tentei criar um cursor declarando da seguinte forma:

Selecionar tudo

TYPE CursorLoop IS REF CURSOR
Depois atribuir a este CursorLoop o cursor C_saldo1 ou C_Saldo2, mais não esta funcionando.
Alguém pode me dar uma dica de como posso estar fazendo isso.
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Se os dois cursores trazem as mesmas colunas, da pra fazer um cursor apenas e juntar as duas querys com um UNION.
E restringir as querys para executar dependendo do que retornar na sua procedure.
Dependendo do valor, executa apenas a query de cima do UNION, ou a somente a query abaixo do UNION.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Sem código fonte para analisarmos, e a mensagem de erro completa, não tem como ajudar... é como a famosa questão: "meu carro não dá partida, como conserto?" :D
LordElfo
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 111
Registrado em: Qui, 22 Fev 2007 2:34 pm
Localização: DF
________________
http://lordelfo.blogspot.com
Thiago Façanha

Pode tentar algo do tipo declarar uma variavel varchar2 por exemplo acao_sql o nome.

Selecionar tudo

   TYPE r_cursor IS REF CURSOR;
    c_cursor          r_cursor;
   sql_string               VARCHAR2 (10000);
ai de acordo com o que você precisa você passar uma string com a query para esta variavel

Selecionar tudo

/*Condicao01*/
acao_sql := "select 1 from dual";
/*Condicao02*/
acao_sql := "select 2 from dual";
e então
Abre o cursor que você criou.

Selecionar tudo

 OPEN c_cursor_acao FOR acao_sql;
Isso te ajuda?

Vlw
LordElfo
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 111
Registrado em: Qui, 22 Fev 2007 2:34 pm
Localização: DF
________________
http://lordelfo.blogspot.com
Thiago Façanha

Correção..
onde tem acao_sql troca por sql_string. Era para ser a mesma variável.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes