Я слышал, как люди ссылались на эту таблицу, и не понимал, о чем она.
Лучший ответ здесь о двойном asktom.oracle.com/pls/asktom/…, люди не уделяют больше внимания приведенной выше ссылке на комментарий, поэтому я комментирую здесь ... посмотрите на это, вы не пожалеете





Я думаю, что эта статья в Википедии может помочь прояснить ситуацию.
http://en.wikipedia.org/wiki/DUAL_table
The DUAL table is a special one-row table present by default in all Oracle database installations. It is suitable for use in selecting a pseudocolumn such as SYSDATE or USER The table has a single VARCHAR2(1) column called DUMMY that has a value of "X"
Вид псевдотаблицы, для которой вы можете запускать команды и получать результаты, например sysdate. Также помогает проверить, включен ли Oracle, проверить синтаксис sql и т. д.
Это своего рода фиктивная таблица с единственной записью, используемой для выбора, когда вы на самом деле не интересуетесь данными, а вместо этого хотите получить результаты некоторой системной функции в операторе выбора:
например select sysdate from dual;
Это специальная таблица в Oracle. Я часто использую его для расчетов или проверки системных переменных. Например:
Select 2*4 from dual распечатывает результат расчетаSelect sysdate from dual печатает текущую дату сервера.Это фиктивная таблица с одним элементом. Это полезно, потому что Oracle не допускает таких операторов, как
SELECT 3+4
Вы можете обойти это ограничение, написав
SELECT 3+4 FROM DUAL
вместо.
Это объект, который нужно вставить в возвращаемую 1 пустую строку. Например: выберите 1 из двойных; возвращает 1
выберите 21 + 44 из двойного; возвращает 65
выберите [последовательность] .nextval из двойного; возвращает следующее значение из последовательности.
Таблица DUAL - это специальная однострочная таблица, которая по умолчанию присутствует во всех инсталляциях баз данных Oracle. Подходит для выбора псевдоколонки, например SYSDATE или USER.
В таблице есть единственный столбец VARCHAR2 (1) с именем DUMMY, который имеет значение «X».
Все об этом можно прочитать в http://en.wikipedia.org/wiki/DUAL_table
От Википедия
История
Таблица DUAL была создана Чаком Вайсом из корпорации Oracle, чтобы предоставить таблицу для объединения во внутренние представления:
I created the DUAL table as an underlying object in the Oracle Data Dictionary. It was never meant to be seen itself, but instead used inside a view that was expected to be queried. The idea was that you could do a JOIN to the DUAL table and create two rows in the result for every one row in your table. Then, by using GROUP BY, the resulting join could be summarized to show the amount of storage for the DATA extent and for the INDEX extent(s). The name, DUAL, seemed apt for the process of creating a pair of rows from just one. 1
Это может быть неочевидно из вышеизложенного, но исходная таблица DUAL имела в себе две строки (отсюда и ее название). В настоящее время у него только одна строка.
Оптимизация
DUAL изначально был таблицей, и ядро базы данных выполняло дисковый ввод-вывод для таблицы при выборе из DUAL. Этот дисковый ввод-вывод обычно был логическим вводом-выводом (без доступа к физическому диску), поскольку блоки диска обычно уже были кэшированы в памяти. Это привело к большому количеству логических операций ввода-вывода для таблицы DUAL.
Более поздние версии базы данных Oracle были оптимизированы, и база данных больше не выполняет физический или логический ввод-вывод для таблицы DUAL, даже если таблица DUAL все еще существует.
DUAL необходим при разработке PL / SQL для использования функций, доступных только в SQL.
например
DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
Больше фактов о DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Здесь проводятся захватывающие эксперименты и более захватывающие объяснения Тома
Таблица утилит в Oracle только с 1 строкой и 1 столбцом. Он используется для выполнения ряда арифметических операций и может использоваться обычно там, где необходимо сгенерировать известный результат.
ВЫБРАТЬ * ИЗ двойного;
даст одну строку с одним столбцом с именем «DUMMY» и значением «X», как показано здесь:
DUMMY ----- X
DUAL мы в основном использовали для получения следующего числа из последовательностей.
Синтаксис: SELECT 'имя_последовательности'.NEXTVAL FROM DUAL
Это вернет значение одной строки и одного столбца (имя столбца NEXTVAL).
В этом нет необходимости с 11g. Последовательности можно использовать изначально в PL / SQL.
другая ситуация, требующая select ... from dual, - это когда мы хотим получить код (определение данных) для различных объектов базы данных (например, TABLE, FUNCTION, TRIGGER, PACKAGE), используя встроенную функцию DBMS_METADATA.GET_DDL:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
Верно то, что в настоящее время IDE действительно предлагают возможность просмотра DDL таблицы, но в более простых средах, таких как SQL Plus, это может быть действительно удобно.
РЕДАКТИРОВАТЬ
более общая ситуация: в основном, когда нам нужно использовать любую процедуру PL / SQL внутри стандартного оператора SQL или когда мы хотим вызвать процедуру из командной строки:
select my_function(<input_params>) from dual;
оба рецепта взяты из книги Джоша Джуно и Мэтта Арены «Рецепты Oracle PL / SQL».
DUAL - это специальная таблица с одной строкой и одним столбцом, которая по умолчанию присутствует во всех базах данных Oracle. Владелец DUAL - SYS.
DUAL - это таблица, автоматически создаваемая Oracle Database вместе с функциями данных. Он всегда используется для получения функций операционной системы (например, даты, времени, арифметических выражений и т. д.)
SELECT SYSDATE from dual;