it-swarm-eu.dev

Was ist der Doppeltisch in Oracle?

Ich habe Leute gehört, die sich auf diese Tabelle bezogen haben, und war mir nicht sicher, worum es ging.

216
Brian G

Es ist eine Art Dummy-Tabelle mit einem einzelnen Datensatz, der zum Auswählen verwendet wird, wenn Sie nicht wirklich an den Daten interessiert sind, sondern stattdessen die Ergebnisse einiger Systemfunktionen in einer select-Anweisung benötigen:

z.B. select sysdate from dual;

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

216
Sean McMains

Es ist eine Dummy-Tabelle mit einem Element. Es ist nützlich, weil Oracle Anweisungen wie nicht zulässt

 SELECT 3+4

Sie können diese Einschränkung umgehen, indem Sie schreiben

 SELECT 3+4 FROM DUAL

stattdessen.

77
mfx

Aus Wikipedia

Geschichte

Die DUAL-Tabelle wurde von Chuck Weiss von der Oracle Corporation erstellt, um eine Tabelle zum Zusammenfügen in internen Ansichten bereitzustellen:

Ich habe die DUAL-Tabelle als zugrunde liegendes Objekt im Oracle Data Dictionary erstellt. Es sollte nie selbst gesehen werden, sondern in einer Ansicht verwendet werden, die abgefragt werden sollte. Die Idee war, dass Sie einen JOIN für die DUAL-Tabelle ausführen und im Ergebnis für jede Zeile in Ihrer Tabelle zwei Zeilen erstellen können. Mithilfe von GROUP BY kann der resultierende Join dann zusammengefasst werden, um die Speichermenge für den DATA-Bereich und den INDEX-Bereich (die INDEX-Bereiche) anzuzeigen. Der Name DUAL schien dafür geeignet zu sein, aus nur einer Zeile ein Zeilenpaar zu erstellen. 1

Aus den obigen Ausführungen ist es möglicherweise nicht ersichtlich, aber die ursprüngliche DUAL-Tabelle enthielt zwei Zeilen (daher der Name). Heutzutage hat es nur eine Reihe.

Optimierung

DUAL war ursprünglich eine Tabelle, und das Datenbankmodul führte bei der Auswahl von DUAL disk IO für die Tabelle aus. Diese Disk IO war normalerweise logisch IO (ohne physischen Datenträgerzugriff), da die Datenträgerblöcke normalerweise bereits im Arbeitsspeicher zwischengespeichert waren. Dies führte zu einer großen Menge logischer IO für die DUAL-Tabelle).

Spätere Versionen der Oracle-Datenbank wurden optimiert und die Datenbank führt keine physischen oder logischen IO für die DUAL-Tabelle mehr aus, obwohl die DUAL-Tabelle tatsächlich noch vorhanden ist.

66
Ivan Bosnic

Ich denke, dieser Wikipedia-Artikel kann zur Klärung beitragen.

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

Die DUAL-Tabelle ist eine spezielle einzeilige Tabelle, die standardmäßig in allen Oracle-Datenbankinstallationen vorhanden ist. Es ist für die Auswahl einer Pseudospalte wie SYSDATE oder USER geeignet. Die Tabelle enthält eine einzelne VARCHAR2 (1) -Spalte namens DUMMY mit dem Wert "X".

20
Jorge Ferreira

Es ist der besondere Tisch in Oracle. Ich benutze es oft für Berechnungen oder zur Überprüfung von Systemvariablen. Zum Beispiel:

  • Select 2*4 from dual druckt das Ergebnis der Berechnung aus
  • Select sysdate from dual druckt das aktuelle Datum des Servers.
10
Martin08

Eine Dienstprogrammtabelle in Oracle mit nur 1 Zeile und 1 Spalte. Es wird verwendet, um eine Reihe von arithmetischen Operationen auszuführen, und kann allgemein verwendet werden, wenn eine bekannte Ausgabe erzeugt werden muss.

SELECT * FROM dual;

ergibt eine einzelne Zeile mit einer einzelnen Spalte mit dem Namen "DUMMY" und dem Wert "X", wie hier gezeigt:

DUMMY
----- 
X
4
AB01

Eine Art Pseudotabelle, für die Sie Befehle ausführen und Ergebnisse abrufen können, z. B. sysdate. Außerdem können Sie überprüfen, ob Oracle aktiv ist, und die SQL-Syntax usw. überprüfen.

4
Kevan Emmott

Weitere Fakten zum DUAL ....

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

Spannende Experimente hier und spannende Erklärungen von Tom

Die DUAL-Tabelle ist eine spezielle einzeilige Tabelle, die standardmäßig in allen Oracle-Datenbankinstallationen vorhanden ist. Es eignet sich zur Auswahl einer Pseudospalte wie SYSDATE oder USER

Die Tabelle enthält eine einzelne VARCHAR2 (1) -Spalte namens DUMMY mit dem Wert "X".

Sie können alles darüber in http://en.wikipedia.org/wiki/DUAL_table lesen

2
Sakin

In der PL/SQL-Entwicklung ist DUAL erforderlich, um Funktionen zu verwenden, die nur in SQL verfügbar sind

z.B.

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

DUAL haben wir hauptsächlich verwendet, um die nächste Nummer aus den Sequenzen zu erhalten.

Syntax: SELECT 'sequence_name'.NEXTVAL FROM DUAL

Dies gibt den Wert für eine Zeile und eine Spalte (NEXTVAL-Spaltenname) zurück.

0
Vishwa G

Es ist ein Objekt, das in die von dieser Rückgabe 1 leere Zeile eingefügt werden soll. Zum Beispiel: Wählen Sie 1 aus dual; gibt 1 zurück

wähle 21 + 44 aus dual; gibt 65 zurück

wähle [sequence] .nextval aus dual; Gibt den nächsten Wert aus der Sequenz zurück.

0
Gonzalo Merayo

eine andere Situation, die erfordert select ... from dual ist, wenn wir den Code (Datendefinition) für verschiedene Datenbankobjekte (wie TABLE, FUNCTION, TRIGGER, PACKAGE) mit dem eingebauten DBMS_METADATA.GET_DDL Funktion:

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

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

heutzutage bieten die IDEs zwar die Möglichkeit, die DDL einer Tabelle anzuzeigen, in einfacheren Umgebungen wie SQL Plus kann dies jedoch sehr praktisch sein.

EDIT

eine allgemeinere Situation: Im Grunde genommen, wenn wir eine PL/SQL-Prozedur in einer Standard-SQL-Anweisung verwenden müssen oder wenn wir eine Prozedur über die Befehlszeile aufrufen möchten:

select my_function(<input_params>) from dual;

beide Rezepte stammen aus dem Buch 'Oracle PL/SQL Recipes' von Josh Juneau und Matt Arena

0
Newton fan 01

Das DUAL ist eine spezielle Tabelle mit einer Zeile und einer Spalte, die standardmäßig in allen Oracle-Datenbanken vorhanden ist. Der Inhaber von DUAL ist SYS.

DUAL ist eine Tabelle, die von Oracle Database automatisch zusammen mit den Datenfunktionen erstellt wird. Es wird immer verwendet, um die Funktionen des Betriebssystems abzurufen (wie Datum, Uhrzeit, arithmetischer Ausdruck usw.).

SELECT SYSDATE from dual;  
0
Manjunatha B