¿Qué es la tabla dual en Oracle?


Respuestas:


229

Es una especie de tabla ficticia con un único registro utilizado para seleccionar cuando no está realmente interesado en los datos, sino que quiere los resultados de alguna función del sistema en una declaración de selección:

p.ej select sysdate from dual;

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


79

Es una mesa ficticia con un elemento en ella. Es útil porque Oracle no permite declaraciones como

 SELECT 3+4

Puede evitar esta restricción escribiendo

 SELECT 3+4 FROM DUAL

en lugar.


70

De Wikipedia

Historia

La tabla DUAL fue creada por Chuck Weiss de Oracle Corporation para proporcionar una tabla para unirse en vistas internas:

Creé la tabla DUAL como un objeto subyacente en el Diccionario de Datos Oracle. Nunca se pensó para verse, sino que se utilizó dentro de una vista que se esperaba consultar. La idea era que pudieras unirte a la tabla DUAL y crear dos filas en el resultado para cada fila de tu tabla. Luego, al usar GROUP BY, la unión resultante podría resumirse para mostrar la cantidad de almacenamiento para la extensión DATA y para la extensión o extensiones INDEX. El nombre, DUAL, parecía apto para el proceso de crear un par de filas a partir de una sola. 1

Puede que no sea obvio por lo anterior, pero la tabla DUAL original tenía dos filas (de ahí su nombre). Hoy en día solo tiene una fila.

Mejoramiento

DUAL originalmente era una tabla y el motor de la base de datos realizaría el disco IO en la tabla al seleccionar DUAL. Esta E / S de disco generalmente era una E / S lógica (que no implicaba acceso físico al disco) ya que los bloques de disco generalmente ya estaban almacenados en la memoria caché. Esto dio como resultado una gran cantidad de IO lógico contra la tabla DUAL.

Las versiones posteriores de la base de datos Oracle se han optimizado y la base de datos ya no realiza E / S físicas o lógicas en la tabla DUAL aunque la tabla DUAL todavía exista.


21

Creo que este artículo de Wikipedia puede ayudar a aclarar.

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

La tabla DUAL es una tabla especial de una fila presente de forma predeterminada en todas las instalaciones de bases de datos Oracle. Es adecuado para usar en la selección de una pseudocolumna como SYSDATE o USER. La tabla tiene una sola columna VARCHAR2 (1) llamada DUMMY que tiene un valor de "X"


10

Es la mesa especial en Oracle. A menudo lo uso para cálculos o para verificar variables del sistema. Por ejemplo:

  • Select 2*4 from dual imprime el resultado del cálculo
  • Select sysdate from dual imprime la fecha actual del servidor.

4

Una especie de pseudo tabla en la que puede ejecutar comandos y obtener resultados, como sysdate. También lo ayuda a verificar si Oracle está activo y verificar la sintaxis de SQL, etc.


4

Una tabla de utilidades en Oracle con solo 1 fila y 1 columna. Se usa para realizar una serie de operaciones aritméticas y se puede usar generalmente cuando se necesita generar una salida conocida.

SELECCIONAR * DE dual;

dará una sola fila, con una sola columna llamada "DUMMY" y un valor de "X" como se muestra aquí:

DUMMY
----- 
X


2

La tabla DUAL es una tabla especial de una fila presente de forma predeterminada en todas las instalaciones de bases de datos Oracle. Es adecuado para su uso en la selección de una pseudocolumna como SYSDATE o USER

La tabla tiene una sola columna VARCHAR2 (1) llamada DUMMY que tiene un valor de "X"

Puede leer todo al respecto en http://en.wikipedia.org/wiki/DUAL_table


1

DUAL es necesario en el desarrollo PL / SQL para usar funciones que solo están disponibles en SQL

p.ej

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

0

Es un objeto para poner desde el que devuelve 1 fila vacía. Por ejemplo: seleccione 1 de dual; devuelve 1

seleccione 21 + 44 de dual; devuelve 65

seleccione [secuencia] .nextval de dual; devuelve el siguiente valor de la secuencia.


0

DUAL usamos principalmente para obtener el siguiente número de las secuencias.

Sintaxis: SELECCIONE 'nombre_secuencia'.NEXTVAL DESDE DUAL

Esto devolverá el valor de una fila una columna (nombre de columna NEXTVAL).


1
Eso no es necesario desde 11g. Las secuencias se pueden usar de forma nativa en PL / SQL.
Jon Heller

0

Otra situación que requiere select ... from dual es cuando queremos recuperar el código (definición de datos) para diferentes objetos de la base de datos (como TABLE, FUNCTION, TRIGGER, PACKAGE), utilizando la DBMS_METADATA.GET_DDLfunción integrada:

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

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

Es cierto que hoy en día los IDE ofrecen la capacidad de ver el DDL de una tabla, pero en entornos más simples como SQL Plus esto puede ser realmente útil.

EDITAR

Una situación más general: básicamente, cuando necesitamos usar cualquier procedimiento PL / SQL dentro de una instrucción SQL estándar, o cuando queremos llamar a un procedimiento desde la línea de comandos:

select my_function(<input_params>) from dual;

ambas recetas están tomadas del libro 'Oracle PL / SQL Recipes' de Josh Juneau y Matt Arena


0

El DUAL es una tabla especial de una fila y una columna presente de forma predeterminada en todas las bases de datos Oracle. El propietario de DUAL es SYS.

DUAL es una tabla creada automáticamente por Oracle Database junto con las funciones de datos. Siempre se usa para obtener las funciones del sistema operativo (como fecha, hora, expresión aritmética, etc.)

SELECT SYSDATE from dual;  
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.