[oracle_br] Re: Tabela temporária

2008-11-20 Por tôpico jlchiappa
Não, não existe : no bd Oracle as tabelas temporárias (conhecidas como
GTTs, Global Temporary Tables) não são criadas automaticamente, vc TEM
que fazer um CREATE para elas : a idéia delas é que na implantação do
sistema vc já as criou, nesse momento elas estão VAZIAS absolutamente,
são só um registro na DBA_TABLES e tabs internas do sistema (o que
ABSOLUTAMENTE não tem implicação prática de performance nem de
espaço), aí o usuário bota dados nelas á vontade, automaticamente
quando a sessão acaba (ou após um COMMIT, se assim vc especificar) os
dados vão embora,somem, MAS a estrutura vazia continua lá presente, ok
?  Pode consulta a documentação (principalmente o manual de Concepts)
que é isso aí
 Esse é o procedimento mais correto e recomendado para se trabalhar
com GTTs, mas se vc quiser vc pode ter algo semelhante ao que vc diz,
num trigger de LOGON vc faz o CREATE da GTT, e no trigger de logoff vc
faz o DROP : isso NÂO É RECOMENDADO, pois (entre outras questões) tem
overhead de performance (DDLs exigem COMMITs implícitos, fazem
acesso/uso do dicionário de dados, etc), implicam em PARSEs, E também
invalidam outros SQLs que estejam no cache e que usem a GTT em questão.

 Claro, em muitos casos vc PODE também usar a tabela temporária
implícita, utilizando in-line views , cláusula WITH, etc - isso
normalmente implica em materialização dos dados, logicamente
falando, MAS isso são opções de sintax SQL, são implantadas num só SQL
e são usadas atomicamente por esse SQL só, não sei se isso te serve
mas é uma outra opção...

[]s

Chiappa

==
Palestrante ENPO.BR - acesse http://www.enpo-br.org/
Instrutor Workshops ENPO/TWS - acesse http://www.twstecnologia.com.br/
==

O mundo precisa de mais gênios humildes e modestos - infelizmente
somos muito poucos
--- Em oracle_br@yahoogrupos.com.br, francisco porfirio
[EMAIL PROTECTED] escreveu

 Pessoal...
 
 Gostaria de saber se no oracle existe o conceito de tabelas
temporárias por
 session, ou seja: assim que um usuário se autenticar automaticamente
essa
 tabela é criada e quando a sessão é encerrada automaticamente a tabela é
 eliminada.
 
 -- 
 Atenciosamente
 Francisco Porfirio Ribeiro Neto
 
 
 [As partes desta mensagem que não continham texto foram removidas]





Re: [oracle_br] Re: Tabela temporária

2008-11-20 Por tôpico francisco porfirio
Beleza Eduardo e Chiappa, muito obrigado pela resposta.

E com relação a velocidade que vocês responderam então nem se fala.

Muito obrigado mesmo.

-- 
Atenciosamente
Francisco Porfirio Ribeiro Neto


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



[oracle_br] Re: TABELA TEMPORÁRIA...

2005-11-22 Por tôpico Mauro Edson
Bom dia Nicolas...

as tabelas temporárias podem ser por transação ou por sessão.

temporaria por transação:
ex.:

create global temporary table temp_func
(cd_mat number(5),
 nm_funcvarchar2(30),
 vl_sal number(11,2));

insert into temp_func
select cd_mat, nmfunc||' '||nm_sobrenome, vl_sal
from func
where cd_mat in (10,30,100,120);

commit;  (término da transação)

select * from temp_func
  (este select não vai selecionar nenhuma linha)

desc temp_func
  (o comando mostrará a estrutura da tabela temp)


no exemplo acima foi criado uma tabela temporaria associada à
transação. Isto seguinifica que ao executar a efetivação da
transação (commit) todos os dados da tabela temporária são 
perdidos, porém sua descrição(estrutura) permance.

-
temporaria por sessão:
ex.:

create global temporary table temp_func
(cd_mat number(5),
 nm_funcvarchar2(30),
 vl_sal number(11,2))
on commit preserve rows;

insert into temp_func
select cd_mat, nmfunc||' '||nm_sobrenome, vl_sal
from func
where cd_mat in (10,30,100,120);

commit;  (término da transação)

select * from temp_func
  (este select vai selecionar todas as linhas linha)

connect desenv/desenv

select * from temp_func
   (não foi selecionado dados pois houve o fim da sessão quando
foi executado o comando de connect acima)

A tabela foi criada com a indicação de que após o término da 
transação os dados sao mantidos e você pode fazer outros 
comandos, após o termino da sessão os dados serão perdidos.




--
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/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
http://br.yahoo.com/info/utos.html

 




Re: [oracle_br] Re: TABELA TEMPORÁRIA...

2005-11-22 Por tôpico Nícolas Santana
Obrigado.
  - Original Message - 
  From: Marcio Portes 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Tuesday, November 22, 2005 11:27 AM
  Subject: [oracle_br] Re: TABELA TEMPORÁRIA...


  Exemplo de criação de tabela temporária
  http://download-
  west.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_73a.htm#2
  062857

  Não sei se é o seu caso, mas muitas vezes queremos usar o mesmo 
  conceito de desenvolvimento do SQL Server ou Sybase que utiliza tabelas 
  temporárias dentro de procedures. No Oracle não é bem assim: 
  simplesmente use um cursor para sua tabela temporária - mais ou menos 
  assim:

  for x in ( select col1, col2, col3 from tab1 ...)
  loop
 ...
 x.col1 := ... ;
 l_calculo := x.col2 * 100 / ( x.col3 + 1.10 ) ...
 
  end loop;   

  E por ai vai. Veja o porque está necessitando de uma tabela temporária.

  --- Em oracle_br@yahoogrupos.com.br, Nícolas Santana 
  [EMAIL PROTECTED] escreveu
   Bom dia a Todos
   
   ALGUÉM SABE COMO FAÇO PARA CRIAR UMA TABELA TEMPORÁRIA NO ORACLE 9i?
   
   
   
   
   Nícolas
   
   [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/ 
  
--_
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 


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

   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[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/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
http://br.yahoo.com/info/utos.html

 




Re: [oracle_br] Re: TABELA TEMPORÁRIA...

2005-11-22 Por tôpico Nícolas Santana
Obrigado, 
eu preciso usar uma tabela temporária mesmo pq eu vou coletar informações de 
algumas tabelas e vou precisar jogar os resultados em uma única tabela antes de 
gerar um determinado Relatorio.




Nícolas
  - Original Message - 
  From: Mauro Edson 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Tuesday, November 22, 2005 11:43 AM
  Subject: [oracle_br] Re: TABELA TEMPORÁRIA...


  Bom dia Nicolas...

  as tabelas temporárias podem ser por transação ou por sessão.

  temporaria por transação:
  ex.:

  create global temporary table temp_func
  (cd_matnumber(5),
  nm_func  varchar2(30),
  vl_salnumber(11,2));

  insert into temp_func
  select cd_mat, nmfunc||' '||nm_sobrenome, vl_sal
  from func
  where cd_mat in (10,30,100,120);

  commit;  (término da transação)

  select * from temp_func
(este select não vai selecionar nenhuma linha)

  desc temp_func
(o comando mostrará a estrutura da tabela temp)


  no exemplo acima foi criado uma tabela temporaria associada à
  transação. Isto seguinifica que ao executar a efetivação da
  transação (commit) todos os dados da tabela temporária são 
  perdidos, porém sua descrição(estrutura) permance.

  -
  temporaria por sessão:
  ex.:

  create global temporary table temp_func
  (cd_matnumber(5),
  nm_func  varchar2(30),
  vl_salnumber(11,2))
  on commit preserve rows;

  insert into temp_func
  select cd_mat, nmfunc||' '||nm_sobrenome, vl_sal
  from func
  where cd_mat in (10,30,100,120);

  commit;  (término da transação)

  select * from temp_func
(este select vai selecionar todas as linhas linha)

  connect desenv/desenv

  select * from temp_func
 (não foi selecionado dados pois houve o fim da sessão quando
  foi executado o comando de connect acima)

  A tabela foi criada com a indicação de que após o término da 
  transação os dados sao mantidos e você pode fazer outros 
  comandos, após o termino da sessão os dados serão perdidos.




  
--
  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/ 
  
--_
  Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 


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

   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[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/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
http://br.yahoo.com/info/utos.html