Что такое двойная таблица в Oracle?



Я слышал, как люди ссылались на эту таблицу и не был уверен, что это было.

654   13  

13 ответов:

это своего рода фиктивная таблица с одной записью, используемой для выбора, когда вы на самом деле не заинтересованы в данных, но вместо этого хотите получить результаты некоторой системной функции в инструкции select:

например select sysdate from dual;

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

это фиктивная таблица с одним элементом в нем. Это полезно, потому что Oracle не допускает высказываний типа

 SELECT 3+4

Вы можете обойти это ограничение, написав

 SELECT 3+4 FROM DUAL

вместо.

с Википедия

история

двойная таблица была создана Чаком Вайсом из Oracle corporation, чтобы обеспечить таблицу для объединения во внутренних представлениях:

я создал двойную таблицу в качестве базового объекта в словаре данных Oracle. Он никогда не должен был быть замечен сам, но вместо этого использовался внутри представления, которое должно было быть запрошено. Идея была в том, что вы смогл сделать соединение к двойной таблице и создать две строки в результате для каждой строки в таблице. Затем, используя GROUP BY, результирующее соединение можно суммировать, чтобы показать объем хранилища для экстент данных и для экстента(ов) индекса. Имя, двойное, казалось apt для процесса создания пары строк только из одного. 1

Это может быть не очевидно из вышеизложенного, но исходная двойная таблица имела две строки в ней (отсюда и ее название). В настоящее время он имеет только один ряд.

оптимизация

DUAL изначально был таблицей, и компонент database engine выполнял дисковый ввод-вывод в таблице при выборе из DUAL. Этот диск ИО, как правило, логического ввода-вывода (не связанных с физическим доступом к диску) как дисковые блоки, как правило, уже были кэшированы в памяти. Это привело к большому количеству логического ввода-вывода против двойной таблицы.

более поздние версии базы данных Oracle были оптимизированы, и база данных больше не работает физический или логический IO на двойной таблице, даже если двойная таблица все еще фактически существует.

Я думаю, что эта статья в Википедии может помочь прояснить.

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

двойная таблица особенная ОДН-строка таблица присутствует по умолчанию во всех Oracle установки баз данных. Это подходит для использования при выборе псевдостолбцом такие как SYSDATE или пользователь таблица имеет один столбец VARCHAR2 (1) называется Манекен, который имеет значение "X"

Это специальная таблица в Oracle. Я часто использую его для расчетов или проверки системных переменных. Например:

  • Select 2*4 from dual выводит результат расчета
  • Select sysdate from dual выводит текущую дату сервера.

вид псевдо-таблицы, с которой вы можете запускать команды и получать результаты, такие как sysdate. Также помогает вам проверить, работает ли Oracle и проверить синтаксис sql и т. д.

таблица утилит в Oracle только с 1 строкой и 1 столбцом. Он используется для выполнения ряда арифметических операций и может быть использован в общем случае, когда нужно сгенерировать известный выход.

SELECT * FROM dual;

даст одну строку с одним столбцом с именем " DUMMY "и значением" X", как показано здесь:

DUMMY
----- 
X

больше фактов о двойном....

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

захватывающие эксперименты, сделанные здесь, и более захватывающие объяснения Тома

двойная таблица-это специальная однострочная таблица, присутствующая по умолчанию во всех установках баз данных Oracle. Она подходит для использования в выборе псевдостолбцом например, sysdate и

в таблице есть один столбец VARCHAR2 (1) с именем DUMMY, который имеет значение "X"

вы можете прочитать все об этом в http://en.wikipedia.org/wiki/DUAL_table

DUAL необходим в разработке PL / SQL для использования функций, которые доступны только в SQL

например

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

Это объект, чтобы положить в из этого возврата 1 пустую строку. Например: выберите 1 из двух; возвращает 1

выберите 21+44 двойной; возвращает 65

выберите [последовательности].nextval от dual; возвращает следующее значение из последовательности.

двойной мы в основном использовали для получения следующего номера из последовательностей.

синтаксис: выберите 'sequence_name'.NEXTVAL ОТ DUAL

это вернет значение одной строки одного столбца (имя столбца NEXTVAL).

другая ситуация, которая требует select ... from dual это когда мы хотим получить код (определение данных) для различных объектов базы данных (например, таблица, функция, триггер, пакет), используя встроенный :

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

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

in верно, что в настоящее время IDE предлагают возможность просмотра DDL таблицы, но в более простых средах, таких как SQL Plus, это может быть очень удобно.

EDIT

более общая ситуация: в основном, когда нам нужно использовать любую процедуру PL / SQL внутри стандартного оператора SQL или когда мы хотим вызвать процедуру из командной строки:

select my_function(<input_params>) from dual;

оба рецепта взяты из книги "Oracle PL / SQL Recipes" Джоша Джуно и Мэтта Арены

Comments

    Ничего не найдено.