Tabelas Temporárias no Banco de Dados Oracle

Veja neste artigo tabelas temporárias no Banco de Dados Oracle.

Uma tabela temporária é uma tabela com vida útil de uma sessão ou transação. Ela está vazia quando a sessão ou transação começa e descarta os dados ao fim da sessão ou transação. Uma tabela temporária é associada à transação. Isto significa que ao término da transação os dados da tabela são perdidos, porém sua descrição permanece gravada no banco de dados mesmo após a mudança de sessão.

Nesta solução, o que é temporário é o armazenamento dos dados. Com este tipo de tabela não temos necessidade de remover os dados ao término da transação. Podem ser muito úteis na geração de dados de trabalho temporários. A seguir serão mostrados dois exemplos: O primeiro (Listagem 1) de uma tabela temporária que é associada à transação e o segundo (Listagem 2), de uma tabela temporária que é associada à sessão.

SQL> create global temporary table TEMP_PROD 2 (cod_prod number(5), 3 desc_prod varchar2(30), 4 dat_cadas date); Table created. SQL> insert into TEMP_PROD 2 values (1,'Mesa',sysdate); 1 row created. SQL> select * from TEMP_PROD; COD_PROD DESC_PROD DAT_CADAS ---------- ------------------------------ --------- 1 Mesa 18-MAR-05 SQL> commit; Commit complete. SQL> select * from TEMP_PROD; no rows selected SQL> desc TEMP_PROD; Name Null? Type ------------------------------- -------- ---- COD_PROD NUMBER(5) DESC_PROD VARCHAR2(30) DAT_CADAS DATE SQL>
Listagem 1. Tabela temporária por transação

Neste primeiro exemplo foi criada uma tabela temporária associada à transação. Isto significa que ao término da transação (commit ou rollback) os dados da tabela são perdidos. No exemplo, utilizamos o comando commit para finalizar a transação. Note que após executar o comando commit, o select seguinte não retorna nenhum registro, porém a estrutura da tabela permanece gravada no banco de dados mesmo após a mudança de sessão.

SQL> create global temporary table TEMP_PROD 2 (cod_prod number(5), 3 desc_prod varchar2(30), 4 dat_cadas date) on commit preserve rows; Table created. SQL> insert into TEMP_PROD 2 values (100,'Computador',sysdate); 1 row created. SQL> select * from TEMP_PROD; COD_PROD DESC_PROD DAT_CADAS ---------- ------------------------------ --------- 100 Computador 18-MAR-05 SQL> commit; Commit complete. SQL> select * from TEMP_PROD; COD_PROD DESC_PROD DAT_CADAS ---------- ------------------------------ --------- 100 Computador 18-MAR-05 SQL> connect dados@data1w Enter password: ***** Connected. SQL> select * from TEMP_PROD; no rows selected SQL> desc TEMP_PROD; Name Null? Type ------------------------------- -------- ---- COD_PROD NUMBER(5) DESC_PROD VARCHAR2(30) DAT_CADAS DATE
Listagem 2. Tabela temporária por sessão

Neste segundo exemplo, a tabela foi criada com a indicação de que após o término da transação os dados deverão ser mantidos, ou seja, a tabela é temporária, porém seus dados ficam disponíveis por toda a sessão independente de transação. Quando ocorre o fim da sessão (disconnect e connect), os dados são removidos (ou liberados). Note que no exemplo acima, após executar o comando connect, os dados da tabela foram removidos, porém a estrutura da tabela permanece gravada no banco de dados mesmo após a mudança de sessão.

Características

Segundo Fernandes, as tabelas temporárias possuem as seguintes características:

Conclusões

Vimos neste artigo que o uso da tabelas temporárias é muito interessante, o uso deste mecanismo por transação ou sessão deverá ser analisado em cada caso. Isto pode evitar o problema de se manter tabelas temporárias com volumes grandes armazenados no banco de dados sem real necessidade.

Referências:

Confira também

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados