it-swarm-es.tech

¿Qué es la mesa dual en Oracle?

He oído a personas referirse a esta tabla y no estaba seguro de qué se trataba.

214
Brian G

Es un tipo de tabla ficticia con un solo registro que se usa para seleccionar cuando no está realmente interesado en los datos, pero en su lugar, desea 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

213
Sean McMains

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

 SELECT 3+4

Puede solucionar esta restricción escribiendo

 SELECT 3+4 FROM DUAL

en lugar.

74
mfx

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 de Oracle. Nunca fue diseñado para ser visto en sí mismo, sino que se usó dentro de una vista que se esperaba que se consultara. La idea era que usted podría hacer una ÚNETE para la tabla DUAL y cree dos filas en el resultado para cada fila de la tabla. Luego, al usar GRUPO POR, la combinación resultante podría resumirse para mostrar la cantidad de almacenamiento para la extensión de DATOS y la (s) extensión (es) de ÍNDICE. El nombre, DUAL, parecía adecuado para el proceso de crear un par de filas desde solo una. 1

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

Optimización

DUAL era originalmente una tabla y el motor de la base de datos ejecutaría el disco IO en la tabla al seleccionar DUAL. Este disco IO solía ser lógico IO (no implica el acceso al disco físico) ya que los bloques de disco normalmente ya estaban almacenados en la memoria caché. Esto resultó en una gran cantidad de IO lógico contra la tabla DUAL.

Las versiones posteriores de la base de datos de Oracle se han optimizado y la base de datos ya no realiza física o lógica IO en la tabla DUAL, a pesar de que la tabla DUAL todavía existe.

66
Ivan Bosnic

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 base de datos de 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"

20
Jorge Ferreira

Es la mesa especial en Oracle. A menudo lo uso para cálculos o para verificar las 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.
10
Martin08

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

SELECT * FROM dual;

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

DUMMY
----- 
X
4
AB01

Es un tipo de pseudo tabla con la que puede ejecutar comandos y obtener resultados, como sysdate. También le ayuda a verificar si Oracle está activo y verificar la sintaxis de SQL, etc.

4
Kevan Emmott

Más datos sobre el DUAL ....

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

Experimentos emocionantes hechos aquí, y más explicaciones emocionantes por parte de Tom.

3

La tabla DUAL es una tabla especial de una fila presente de forma predeterminada en todas las instalaciones de base de datos de 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"

Puedes leer todo sobre esto en http://en.wikipedia.org/wiki/DUAL_table

2
Sakin

DUAL es necesario en el desarrollo de 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;
1
steevc

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

Sintaxis: SELECCIONE 'secuencia_nombre'.NEXTVAL DESDE DUAL

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

0
Vishwa G

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

seleccione 21 + 44 de dual; devuelve 65

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

0
Gonzalo Merayo

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 función incorporada DBMS_METADATA.GET_DDL:

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

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

es cierto que en la actualidad 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 declaració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
Newton fan 01

El DUAL es una fila especial, una tabla de columnas presente de forma predeterminada en todas las bases de datos de 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 utiliza para obtener las funciones de los sistemas operativos (como fecha, hora, expresión aritmética, etc.)

SELECT SYSDATE from dual;  
0
Manjunatha B