что такое двойная таблица в oracle?

<p>я слышал, как люди обращались к этой таблице, и не был уверен, о чем она.</p>

<p>это своего рода фиктивная таблица с единственной записью, используемой для выбора, когда вы на самом деле не заинтересованы в данных, а вместо этого хотите получить результаты некоторых системных функций в операторе выбора:</p><p>например <code>select sysdate from dual;</code></p><p>смотрите <a href="http://www.adp-gmbh.ch/ora/misc/dual.html">http://www.adp-gmbh.ch/ora/misc/dual.html</a> </p>

<p>это фиктивная таблица с одним элементом. это полезно, потому что oracle не допускает такие выражения, как</p><pre><code> select 3+4 </code></pre><p>вы можете обойти это ограничение, написав</p><pre><code> select 3+4 from dual </code></pre><p>вместо.</p>

<p>от <a href="http://en.wikipedia.org/wiki/dual\_table">википедия</a> </p><p><strong> история </strong></p><p>таблица dual была создана чаком вейссом из корпорации oracle для предоставления таблицы для объединения во внутренние представления:</p><blockquote> <p><em> я создал таблицу dual как базовый объект в oracle data dictionary. он никогда не предназначался для того, чтобы его видели, а вместо этого использовался внутри представления, которое, как ожидалось, будет запрошено. идея заключалась в том, что вы можете выполнить join для таблицы dual и создать две строки в результате для каждой строки в вашей таблице. затем с помощью group by полученное объединение можно суммировать, чтобы показать объем хранилища для экстента data и для экстента (ов) index. название dual казалось подходящим для процесса создания пары строк из одного. <a href="http://en.wikipedia.org/wiki/dual\_table">1</a> </em></p> </blockquote><p>это может быть неочевидно из вышесказанного, но исходная таблица dual содержала две строки (отсюда и ее название). в настоящее время он имеет только один ряд.</p><p><strong> оптимизация </strong></p><p>изначально dual был таблицей, и при выборе из dual ядро базы данных выполняло диск io в таблице. этот диск io обычно был логическим io (не включая доступ к физическому диску), поскольку блоки диска обычно уже кэшировались в памяти. это привело к большому количеству логических io против таблицы dual.</p><p>более поздние версии базы данных oracle были оптимизированы, и база данных больше не выполняет физическое или логическое io для таблицы dual, хотя таблица dual все еще фактически существует.</p>

<p>я думаю, что эта статья в википедии может помочь уточнить.</p><p> <a href="http://en.wikipedia.org/wiki/dual\_table">http://en.wikipedia.org/wiki/dual\_table</a> </p><blockquote> <p>таблица dual - это специальная таблица из одной строки, присутствующая по умолчанию во всех установках базы данных oracle. он подходит для использования при выборе псевдостолбца, такого как sysdate или user. таблица содержит один столбец varchar2 (1) с именем dummy со значением "x".</p> </blockquote>

<p>это специальная таблица в oracle. я часто использую его для расчетов или проверки системных переменных. например:</p><ul> <li><code>select 2*4 from dual</code> распечатывает результат расчета</li> <li><code>select sysdate from dual</code> печатает текущую дату сервера.</li> </ul>

<p>служебная таблица в oracle только с 1 строкой и 1 столбцом. он используется для выполнения ряда арифметических операций и может использоваться, как правило, там, где необходимо сгенерировать известный результат.</p><p>select * from dual;</p><p>выдаст одну строку с одним столбцом с именем "dummy" и значением "x", как показано здесь:</p><blockquote> <pre><code>dummy ----- x </code></pre></blockquote>

<p>тип псевдотаблицы, с которой вы можете запускать команды и получать результаты, такие как sysdate. также помогает проверить работоспособность oracle, проверить синтаксис sql и т.д.</p>

<p>больше фактов о двойном ....</p><p> <a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11\_question\_id:1562813956388">http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11\_question\_id:1562813956388</a> </p><p>захватывающие эксперименты, сделанные здесь, и более захватывающие объяснения тома</p>

<p>таблица dual - это специальная таблица из одной строки, присутствующая по умолчанию во всех установках базы данных oracle. это подходит для использования при выборе псевдостолбца, такого как sysdate или user</p><p>в таблице есть один столбец varchar2 (1) с именем dummy, который имеет значение "x"</p><p>вы можете прочитать все об этом в <a href="http://en.wikipedia.org/wiki/dual\_table">http://en.wikipedia.org/wiki/dual\_table</a> </p>

<p>dual необходим в разработке pl/sql для использования функций, которые доступны только в sql</p><p>например.</p><pre><code>declare x xmltype; begin select xmlelement("hhh", 'stuff') into x from dual; end; </code></pre>

<p>двойной мы в основном использовали для получения следующего числа из последовательностей.</p><p>синтаксис: выберите 'sequence\_name'.nextval from dual</p><p>это вернет значение одной строки один столбец (имя столбца nextval).</p>

<p>это объект для вставки из этой возвращаемой 1 пустой строки. например: выберите 1 из двойного; возвращает 1</p><p>выберите 21 + 44 из двойного; возвращает 65</p><p>выберите [последовательность] .nextval из двойного; возвращает следующее значение из последовательности.</p>

<p>другая ситуация, которая требует <code>select ... from dual</code>, - это когда мы хотим получить код (определение данных) для различных объектов базы данных (таких как table, function, trigger, package), используя встроенную функцию <code>dbms\_metadata.get\_ddl</code>:</p><pre><code>select dbms\_metadata.get\_ddl('table','<table\_name>') from dual; select dbms\_metadata.get\_ddl('function','<function\_name>') from dual; </code></pre><p>действительно, в настоящее время интегрированные среды разработки предоставляют возможность просмотра ddl таблицы, но в более простых средах, таких как sql plus, это может быть очень удобно.</p><p><strong>редактировать</strong></p><p>более общая ситуация: в основном, когда нам нужно использовать любую процедуру pl/sql внутри стандартного оператора sql или когда мы хотим вызвать процедуру из командной строки:</p><pre><code>select my\_function(<input\_params>) from dual; </code></pre><p>оба рецепта взяты из книги "oracle pl/sql recipes" джоша джуно и мэтта арены</p>

<p>dual - это специальная таблица с одной строкой и одним столбцом, присутствующая по умолчанию во всех базах данных oracle. владелец dual - sys.</p><p>dual - это таблица, автоматически создаваемая oracle database вместе с функциями данных. он всегда используется для получения функций операционных систем (таких как дата, время, арифметическое выражение и т.д.)</p><pre><code>select sysdate from dual; </code></pre>