it-swarm.it

Qual è la doppia tabella in Oracle?

Ho sentito gente riferirsi a questo tavolo e non ero sicuro di cosa si trattasse.

214
Brian G

È una sorta di tabella fittizia con un singolo record utilizzato per selezionare quando non sei effettivamente interessato ai dati, ma vuoi invece i risultati di alcune funzioni di sistema in un'istruzione select:

per esempio. select sysdate from dual;

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

213
Sean McMains

È un tavolo fittizio con un elemento al suo interno. È utile perché Oracle non consente dichiarazioni come

 SELECT 3+4

Puoi aggirare questa limitazione scrivendo

 SELECT 3+4 FROM DUAL

anziché.

75
mfx

Da Wikipedia

Storia

La tabella DUAL è stata creata da Chuck Weiss della Oracle Corporation per fornire una tabella per l'unione nelle viste interne:

Ho creato la tabella DUAL come oggetto sottostante in Oracle Data Dictionary. Non è mai stato pensato per essere visto da solo, ma invece è stato usato all'interno di una vista che avrebbe dovuto essere interrogata. L'idea era che si potesse fare un JOIN alla tabella DUAL e creare due righe nel risultato per ogni riga della tabella. Quindi, utilizzando GROUP BY, il join risultante potrebbe essere riassunto per mostrare la quantità di memoria per l'estensione DATA e per l'estensione (i) INDICE. Il nome, DUAL, sembrava adatto al processo di creazione di una coppia di righe da una sola. 1

Potrebbe non essere ovvio da quanto sopra, ma la tabella DUAL originale aveva due righe (da cui il suo nome). Oggi ha solo una riga.

Optimization

DUAL era originariamente una tabella e il motore di database eseguiva il disco IO sulla tabella quando selezionava da DUAL. Questo disco IO era in genere logico IO (non comporta l'accesso al disco fisico) poiché i blocchi del disco erano di solito già memorizzati nella cache. Ciò ha comportato una grande quantità di IO logico rispetto alla tabella DUAL.

Le versioni successive del database Oracle sono state ottimizzate e il database non esegue più IO fisico o logico sulla tabella DUAL anche se la tabella DUAL esiste ancora.

66
Ivan Bosnic

Penso che questo articolo di Wikipedia possa aiutare a chiarire.

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

La tabella DUAL è una tabella speciale a una riga presente per impostazione predefinita in tutte le installazioni di database Oracle. È adatto per l'uso nella selezione di una pseudocolonna come SYSDATE o USER La tabella ha una singola colonna VARCHAR2 (1) chiamata DUMMY che ha un valore di "X"

20
Jorge Ferreira

È il tavolo speciale di Oracle. Lo uso spesso per i calcoli o il controllo delle variabili di sistema. Per esempio:

  • Select 2*4 from dual stampa il risultato del calcolo
  • Select sysdate from dual stampa la data corrente del server.
10
Martin08

Una tabella di utilità in Oracle con solo 1 riga e 1 colonna. È usato per eseguire una serie di operazioni aritmetiche e può essere usato generalmente dove è necessario generare un output noto.

SELEZIONA * DA doppio;

fornirà una singola riga, con una singola colonna denominata "DUMMY" e un valore di "X" come mostrato qui:

DUMMY
----- 
X
4
AB01

Tipo di pseudo tabella su cui è possibile eseguire comandi e ottenere risultati, ad esempio sysdate. Ti aiuta anche a verificare se Oracle è attivo e controlla la sintassi sql, ecc.

4
Kevan Emmott

Altri fatti sul DUAL ....

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

Esperimenti emozionanti fatti qui e spiegazioni più elettrizzanti di Tom

3

La tabella DUAL è una tabella speciale a una riga presente per impostazione predefinita in tutte le installazioni di database Oracle. È adatto per l'uso nella selezione di una pseudocolonna come SYSDATE o USER

La tabella ha una singola colonna VARCHAR2 (1) chiamata DUMMY che ha un valore di "X"

Puoi leggere tutto al riguardo in http://en.wikipedia.org/wiki/DUAL_table

2
Sakin

DUAL è necessario nello sviluppo PL/SQL per l'utilizzo di funzioni disponibili solo in SQL

per esempio.

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

DUAL abbiamo usato principalmente per ottenere il numero successivo dalle sequenze.

Sintassi: SELEZIONA 'sequence_name'.NEXTVAL FROM DUAL

Ciò restituirà il valore di una riga una colonna (nome colonna NEXTVAL).

0
Vishwa G

È un oggetto da inserire in quel ritorno 1 riga vuota. Ad esempio: selezionare 1 da doppio; ritorna 1

seleziona 21 + 44 da doppio; restituisce 65

selezionare [sequenza] .nextval da doppio; restituisce il valore successivo dalla sequenza.

0
Gonzalo Merayo

un'altra situazione che richiede select ... from dual è quando vogliamo recuperare il codice (definizione dei dati) per diversi oggetti di database (come TABLE, FUNCTION, TRIGGER, PACKAGE), usando la funzione integrata DBMS_METADATA.GET_DDL:

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

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

è vero che al giorno d'oggi gli IDE offrono la possibilità di visualizzare il DDL di una tabella, ma in ambienti più semplici come SQL Plus questo può essere davvero utile.

EDIT

una situazione più generale: in sostanza, quando è necessario utilizzare qualsiasi procedura PL/SQL all'interno di un'istruzione SQL standard o quando si desidera chiamare una procedura dalla riga di comando:

select my_function(<input_params>) from dual;

entrambe le ricette sono tratte dal libro "Oracle PL/SQL Recipes" di Josh Juneau e Matt Arena

0
Newton fan 01

Il DUAL è una riga speciale, una tabella di colonne presente per impostazione predefinita in tutti i database Oracle. Il proprietario di DUAL è SYS.

DUAL è una tabella creata automaticamente da Oracle Database insieme alle funzioni dei dati. Viene sempre utilizzato per ottenere le funzioni del sistema operativo (come data, ora, espressione aritmetica, ecc.)

SELECT SYSDATE from dual;  
0
Manjunatha B