Boa tarde galera!
  
  Chiappa e turma será que eu poderia pegar um gancho aqui sobre "Cursor"?
  Procurei no OTN mas não encontrei um conteúdo que abordasse sobre:
  -> REF CURSOR
  -> Cursor (Explícito x Implícito)
  
  Por favor, vocês poderiam dar algum comentário ou indicar algum site (que pode ser no próprio OTN) onde não encontrei?
  Desde já, obrigadão
  Forte abraço.
  
  Wagner Vinicius
 

jlchiappa <[EMAIL PROTECTED]> escreveu:
  Márcio, REPITO aqui novamente again o que eu falei, SQL onde vc não
sabe uma parte ** IMPLICA ** em SQl dinâmico, no way about it, ou no
máximo, como eu já tinha falado também, se o range de tabelas é
conhecido, uma série de cursores , tipo :

if P_TABELA = 'EMP' then
open cursor nn for selectdatabelaemp;
elsif P_TABELA = 'DEPT' then
open cursor nn for slectdatabeladept;

....

e aí vai, afora essas duas possibilidades (SQL dinÃmico OU número
limitado de cursores), NÃO TEM COMO, certo ??

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br, MARCIO CASTRO
escreveu
>
> Caro JLChiapa:
>
> O problema é justamente esse; eu não quero usar SQL dinâmico
nem REF CURSOR. Note que eu consigo passar variáveis para uma query
de um cursor, desde que esta NÃO referencie o nome da tabela:
>
> cursor c_exemplo(p_chave number)
> is
> select *
> from DEPT
> where DEPTNO = p_chave;
>
> E o que eu precisava era disto:
>
> cursor c_exemplo(p_tabela number)
> is
> select *
> from p_tabela;
>
> Obrigado.
>
> PS: Nem me pergunte por que é que eu não sei o nome da tabela. Na
vida, acontecem coisas das quais não se deve compreeender, ou
acabaremos cometendo arakiri...
>
>
> jlchiappa escreveu:
> Colega, tem sim, mas se performance importa, via de regra vc deve
> FUGIR de SQL dinâmico, e SQL onde vc não sabe em tempo de runtime
> qquer componente afora cláusula de WHERE implica em SQL dinâmico,
VAI
> sim certamente fazer PARSE pracas, não é NEM DE LONGE recomendável,
> mas é possível sim. Pra ** VARIAR ** só um pouco vc não diz a
versão,
> mas em sendo 9i ou superior isso é fácil,exemplo copiado do manual :
>
> [EMAIL PROTECTED]:SQL>ed
> Gravou arquivo afiedt.buf
>
> 1 create or replace procedure PROC_DIN (P_TABLE in VARCHAR2) is
> 2 TYPE EmpCurTyp IS REF CURSOR; -- define weak REF CURSOR
type
> 3 emp_cv EmpCurTyp; -- declare cursor variable
> 4 my_ename varchar2(35);
> 5 my_sal number;
> 6 BEGIN
> 7 OPEN emp_cv FOR -- open cursor variable
> 8 'SELECT ename, sal FROM ' || P_TABLE;
> 9 LOOP
> 10 FETCH emp_cv INTO my_ename, my_sal; -- fetch next row
> 11 EXIT WHEN emp_cv%NOTFOUND; -- exit loop when last row is
> fetched
> 12 dbms_output.put_line('ename=' || my_ename || ',sal=' ||
> my_sal);-- process row
> 13 END LOOP;
> 14 CLOSE emp_cv;
> 15* END;
> [EMAIL PROTECTED]:SQL>/
>
> Procedimento criado.
>
> [EMAIL PROTECTED]:SQL>set serveroutput on size 1000000
> [EMAIL PROTECTED]:SQL>exec PROC_DIN('EMP');
> ename=SMITH,sal=800
> ename=ALLEN,sal=1600
> ename=WARD,sal=1250
> ename=JONES,sal=2975
> ename=MARTIN,sal=1250
> ename=BLAKE,sal=2850
> ename=CLARK,sal=2695
> ename=SCOTT,sal=3000
> ename=KING,sal=5500
> ename=TURNER,sal=1500
> ename=ADAMS,sal=1100
> ename=JAMES,sal=950
> ename=FORD,sal=3000
> ename=MILLER,sal=1430
>
> Procedimento PL/SQL concluído com sucesso.
>
> Veja que pra acrescentar insulto à injúria, o SQL dinâmico ainda por
> cima implica em usar o ineficiente e trabalhoso cursor EXPLÍCITO,
mas
> é isso. Eu recomendaria porém que, se for algo importante, se
possível
> vc não tenha SQL dinãmico, e sim tenha vários cursores fixos e de
> acordo com o parâmetro recebido abra um ou outro, com IF.
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br, Márcio de Figueiredo Moura e
> Castro escreveu
> >
> > Caros senhores:
> >
> > Preciso criar um cursor onde a tabela de oigem deverá ser um
> parâmetro:
> >
> > cursor c_dept(v_tabela varchar2) is
> > SELECT
> > DEPTNO
> > , DNAME
> > , LOC
> > FROM v_tabela;
> >
> > Tem algum jeito de obter o resultado que eu quero?
> >
> > No aguardo,
> >
> > Márcio de Figueiredo Moura e Castro
> >
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>
>
>
>
>
> --------------------------------------------------------------------
------------------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de
inteira responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> --------------------------------------------------------------------
------------------------------------------------------
__________________________________________________________________
>
> Este Grupo recebe o apoio da SQL Magazine -
www.devmedia.com.br/sqlmagazine
> __________________________________________________________________
> O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo,
tenha o link do mesmo para evitar trafego(pedidos) desnecessário.
>
>
> Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE
>
>
> ---------------------------------
> Links do Yahoo! Grupos
>
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/oracle_br/
>
> Para sair deste grupo, envie um e-mail para:
> [EMAIL PROTECTED]
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
Serviço do Yahoo!.
>
>
>
>
> ---------------------------------
> Yahoo! Messenger com voz - Instale agora e faça ligações de graça.
>
> [As partes desta mensagem que não continham texto foram removidas]
>







--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.
Links do Yahoo! Grupos










__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger
http://br.messenger.yahoo.com/

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



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a