Oracle Criar Tabela Temporária

Oracle Criar Tabela Temporaria



As tabelas temporárias globais são úteis ao armazenar dados provisórios necessários apenas para uma transação ou duração de sessão. Ao contrário das tabelas regulares, as tabelas temporárias globais são descartadas automaticamente quando a sessão ou transação termina. Portanto, eles não precisam ser descartados explicitamente como tabelas normais. No entanto, as tabelas temporárias globais são visíveis apenas para a sessão atual, portanto, não podem ser acessadas por outras sessões ou usuários.

No Oracle, uma tabela temporária global é um tipo especial de tabela criada usando a instrução “criar tabela temporária global”. Esta instrução é semelhante à instrução “criar tabela” regular, mas inclui a palavra-chave “temporária global” para especificar que a tabela é uma tabela temporária global.







A sintaxe da instrução “CREATE GLOBAL TEMPORARY TABLE” é a seguinte:



CREATE GLOBAL TEMPORARY TABLE nome_da_tabela (
tipo de dados coluna1 [NULL | NÃO NULO],
tipo de dados coluna2 [NULL | NÃO NULO],
...
) [AO CONFIRMAR {EXCLUIR | PRESERVAR} LINHAS];

Nesta sintaxe, table_name é o nome da tabela temporária global que você deseja criar. coluna1, coluna2, etc., são os nomes e tipos de dados das colunas na tabela.



A cláusula ON COMMIT especifica se as linhas na tabela serão excluídas ou preservadas quando a transação atual for confirmada. O mecanismo de banco de dados usará a opção ON COMMIT DELETE ROWS se a cláusula ON COMMIT não estiver definida.





Conforme mencionado, lembre-se de que os dados em uma tabela temporária são privados. Isso significa que nenhuma outra sessão além daquela que criou a tabela pode acessá-la.

Criando Exemplo de Tabela Temporária Global

Vamos descobrir alguns exemplos práticos de uso da instrução create temporária table em bancos de dados Oracle.



Considere o exemplo de consulta mostrado abaixo:

CRIAR TABELA TEMPORÁRIA GLOBAL temp_sales (
product_id NUMBER(10) NÃO NULO,
data_venda DATA NÃO NULA,
valor_venda NUMBER(10,2) NÃO NULO
) ON COMMIT EXCLUIR LINHAS;

No exemplo acima, criamos uma tabela temporária usando a opção ON COMMIT DELETE ROWS.

Podemos então inserir alguns dados de amostra como:

INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (1, DATE '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

Depois disso, você pode confirmar a transação como:

COMPROMETER-SE;

Após a confirmação, o mecanismo de banco de dados truncará todos os dados na tabela temporária conforme especificado na cláusula de confirmação.

Exemplo 2

O exemplo a seguir mostra como criar uma tabela que preserva as linhas na confirmação:

CRIAR TABELA TEMPORÁRIA GLOBAL temp_sales (
product_id NUMBER(10) NÃO NULO,
data_venda DATA NÃO NULA,
valor_venda NUMBER(10,2) NÃO NULO
) ON COMMIT PRESERVE ROWS ;

Podemos então adicionar linhas de amostra e confirmar conforme mostrado:

INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (1, DATE '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

COMPROMETER-SE;

Neste caso, os dados devem ser preservados após a operação de commit, conforme mostra o comando select abaixo:

SELECIONE * DE TEMP_SALES;

Saída:

Conclusão

A instrução “criar tabela temporária” é uma ferramenta poderosa para criar tabelas temporárias no Oracle. As tabelas temporárias são úteis para armazenar dados temporários necessários apenas para uma transação ou sessão. A instrução “criar tabela temporária” permite definir a estrutura e as colunas da tabela temporária e especificar como as linhas serão tratadas quando a transação for confirmada. Como resultado, o uso de tabelas temporárias pode melhorar o desempenho e a eficiência de suas consultas e aplicativos e reduzir a quantidade de espaço de armazenamento permanente necessário em seu banco de dados.