it-swarm-pt.tech

Qual é a tabela dupla no Oracle?

Eu ouvi pessoas referindo-se a esta mesa e não tinha certeza do que se tratava.

214
Brian G

É uma espécie de tabela fictícia com um único registro usado para selecionar quando você não está realmente interessado nos dados, mas deseja os resultados de alguma função do sistema em uma instrução select:

por exemplo. select sysdate from dual;

Veja http://www.adp-gmbh.ch/ora/misc/dual.html

213
Sean McMains

É uma tabela fictícia com um elemento nela. É útil porque a Oracle não permite declarações como

 SELECT 3+4

Você pode contornar essa restrição escrevendo

 SELECT 3+4 FROM DUAL

em vez de.

75
mfx

De Wikipedia

Histórico

A tabela DUAL foi criada por Chuck Weiss, da corporação Oracle, para fornecer uma tabela para entrar nas visões internas:

Criei a tabela DUAL como um objeto subjacente no Oracle Data Dictionary. Nunca foi concebido para ser visto em si, mas sim usado dentro de uma visão que se esperava que fosse consultada. A ideia era que você pudesse fazer um JOIN na tabela DUAL e criar duas linhas no resultado para cada linha na sua tabela. Em seguida, usando GROUP BY, a junção resultante pode ser resumida para mostrar a quantidade de armazenamento para a extensão DATA e para a (s) extensão (ões) do ÍNDICE. O nome, DUAL, parecia apto para o processo de criação de um par de linhas de apenas um. 1

Pode não ser óbvio a partir do acima, mas a tabela DUAL original tinha duas linhas (daí seu nome). Hoje em dia só tem uma linha.

Otimização

O DUAL era originalmente uma tabela e o mecanismo do banco de dados executaria o disco IO na tabela ao selecionar do DUAL. Esse disco IO era geralmente lógico IO (não envolvendo o acesso ao disco físico), pois os blocos de disco geralmente já estavam armazenados em cache na memória. Isso resultou em uma grande quantidade de lógica IO contra a tabela DUAL.

Versões posteriores do banco de dados Oracle foram otimizadas e o banco de dados não executa mais IOlógico ou lógico na tabela DUAL, embora a tabela DUAL ainda exista.

66
Ivan Bosnic

Eu acho que este artigo da Wikipédia pode ajudar a esclarecer.

http://en.wikipedia.org/wiki/DUAL_table

A tabela DUAL é uma tabela especial de uma linha presente por padrão em todas as instalações do banco de dados Oracle. É adequado para uso na seleção de uma pseudocoluna como SYSDATE ou USER A tabela possui uma única coluna VARCHAR2 (1) chamada DUMMY que possui um valor de "X"

20
Jorge Ferreira

É a tabela especial no Oracle. Costumo usá-lo para cálculos ou verificação de variáveis ​​do sistema. Por exemplo:

  • Select 2*4 from dual imprime o resultado do cálculo
  • Select sysdate from dual imprime a data atual do servidor.
10
Martin08

Uma tabela de utilitário no Oracle com apenas 1 linha e 1 coluna. Ele é usado para executar várias operações aritméticas e pode ser usado geralmente onde é necessário gerar uma saída conhecida.

SELECT * FROM dual;

vai dar uma única linha, com uma única coluna chamada "DUMMY" e um valor de "X", como mostrado aqui:

DUMMY
----- 
X
4
AB01

Como uma pseudo tabela, você pode executar comandos e obter resultados, como o sysdate. Também ajuda você a verificar se o Oracle está ativo e verificar a sintaxe do SQL, etc.

4
Kevan Emmott

Mais fatos sobre o DUAL ....

http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388

Experimentos emocionantes feitos aqui e mais explicações emocionantes por Tom

3
Venkataramesh Kommoju

A tabela DUAL é uma tabela especial de uma linha presente por padrão em todas as instalações do banco de dados Oracle. É adequado para uso na seleção de uma pseudocoluna como SYSDATE ou USER

A tabela tem uma única coluna VARCHAR2 (1) chamada DUMMY que tem um valor de "X"

Você pode ler tudo sobre isso em http://en.wikipedia.org/wiki/DUAL_table

2
Sakin

O DUAL é necessário no desenvolvimento de PL/SQL para usar funções que estão disponíveis apenas no SQL

por exemplo.

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
1
steevc

DUAL nós usamos principalmente para obter o próximo número das seqüências.

Sintaxe: SELECT 'sequence_name'.NEXTVAL FROM DUAL

Isso retornará o valor de uma coluna com uma coluna (nome da coluna NEXTVAL).

0
Vishwa G

É um objeto para colocar a partir desse retorno 1 linha vazia. Por exemplo: selecione 1 do dual; devolve 1

selecione 21 + 44 do dual; devolve 65

selecione [sequência] .nextval de dual; retorna o próximo valor da sequência.

0
Gonzalo Merayo

outra situação que requer select ... from dual é quando queremos recuperar o código (definição de dados) para objetos de banco de dados diferentes (como TABLE, FUNCTION, TRIGGER, PACKAGE), usando a função DBMS_METADATA.GET_DDL incorporada:

select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;

select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;

é verdade que hoje em dia os IDEs oferecem a capacidade de visualizar o DDL de uma tabela, mas em ambientes mais simples, como o SQL Plus, isso pode ser realmente útil.

EDIT

uma situação mais geral: basicamente, quando precisamos usar qualquer procedimento PL/SQL dentro de uma instrução SQL padrão, ou quando queremos chamar um procedimento a partir da linha de comando:

select my_function(<input_params>) from dual;

ambas as receitas são retiradas do livro 'Oracle PL/SQL Recipes' de Josh Juneau e Matt Arena

0
Newton fan 01

O DUAL é uma linha especial, uma tabela de colunas presente por padrão em todos os bancos de dados Oracle. O dono do DUAL é SYS.

O DUAL é uma tabela criada automaticamente pelo Oracle Database, juntamente com as funções de dados. É sempre usado para obter as funções dos sistemas operacionais (como data, hora, expressão aritmética, etc.)

SELECT SYSDATE from dual;  
0
Manjunatha B