J'ai entendu des gens faire référence à ce tableau et je ne savais pas de quoi il s'agissait.
J'ai entendu des gens faire référence à ce tableau et je ne savais pas de quoi il s'agissait.
Réponses:
C'est une sorte de tableau factice avec un seul enregistrement utilisé pour sélectionner lorsque vous n'êtes pas réellement intéressé par les données, mais que vous souhaitez plutôt les résultats d'une fonction système dans une instruction select:
par exemple select sysdate from dual;
De Wikipédia
L'histoire
La table DUAL a été créée par Chuck Weiss de la société Oracle pour fournir une table pour rejoindre les vues internes:
J'ai créé la table DUAL en tant qu'objet sous-jacent dans le dictionnaire de données Oracle. Il n'a jamais été conçu pour être vu lui-même, mais plutôt utilisé à l'intérieur d'une vue qui devait être interrogée. L'idée était que vous pouviez faire un JOIN à la table DUAL et créer deux lignes dans le résultat pour chaque ligne de votre table. Ensuite, en utilisant GROUP BY, la jointure résultante peut être résumée pour afficher la quantité de stockage pour l'étendue DATA et pour les extensions INDEX. Le nom, DUAL, semblait approprié pour le processus de création d'une paire de lignes à partir d'une seule. 1
Cela peut ne pas être évident à partir de ce qui précède, mais la table DUAL d'origine contenait deux lignes (d'où son nom). De nos jours, il n'a qu'une seule ligne.
Optimisation
DUAL était à l'origine une table et le moteur de base de données effectuait les E / S disque sur la table lors de la sélection dans DUAL. Cette E / S de disque était généralement une E / S logique (n'impliquant pas d'accès au disque physique) car les blocs de disque étaient généralement déjà mis en cache en mémoire. Cela a entraîné une grande quantité d'E / S logiques par rapport à la table DUAL.
Les versions ultérieures de la base de données Oracle ont été optimisées et la base de données n'effectue plus d'E / S physiques ou logiques sur la table DUAL même si la table DUAL existe toujours.
Je pense que cet article wikipedia peut aider à clarifier.
http://en.wikipedia.org/wiki/DUAL_table
La table DUAL est une table spéciale à une ligne présente par défaut dans toutes les installations de base de données Oracle. Il peut être utilisé pour sélectionner une pseudocolonne telle que SYSDATE ou USER. La table a une seule colonne VARCHAR2 (1) appelée DUMMY qui a une valeur de "X"
Une sorte de pseudo-table sur laquelle vous pouvez exécuter des commandes et obtenir des résultats, tels que sysdate. Vous aide également à vérifier si Oracle est en place et à vérifier la syntaxe SQL, etc.
Une table d'utilitaires dans Oracle avec seulement 1 ligne et 1 colonne. Il est utilisé pour effectuer un certain nombre d'opérations arithmétiques et peut être utilisé généralement lorsque l'on a besoin de générer une sortie connue.
SELECT * FROM dual;
donnera une seule ligne, avec une seule colonne nommée "DUMMY" et une valeur de "X" comme indiqué ici:
DUMMY ----- X
Plus de faits sur le DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Des expériences passionnantes faites ici, et des explications plus passionnantes par Tom
La table DUAL est une table spéciale à une ligne présente par défaut dans toutes les installations de base de données Oracle. Il peut être utilisé pour sélectionner une pseudocolonne telle que SYSDATE ou USER
La table a une seule colonne VARCHAR2 (1) appelée DUMMY qui a une valeur de "X"
Vous pouvez tout lire à ce sujet dans http://en.wikipedia.org/wiki/DUAL_table
C'est un objet à mettre dans le retour de cette ligne vide 1. Par exemple: sélectionnez 1 parmi dual; renvoie 1
sélectionnez 21 + 44 parmi dual; renvoie 65
sélectionnez [séquence] .nextval parmi dual; renvoie la valeur suivante de la séquence.
DUAL, nous avons principalement utilisé pour obtenir le numéro suivant des séquences.
Syntaxe: SELECT 'nom_séquence' .NEXTVAL DUAL
Cela renverra la valeur d'une colonne et d'une colonne (nom de colonne NEXTVAL).
une autre situation qui nécessite select ... from dual
est lorsque nous voulons récupérer le code (définition de données) pour différents objets de base de données (comme TABLE, FUNCTION, TRIGGER, PACKAGE), en utilisant la DBMS_METADATA.GET_DDL
fonction intégrée:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
Il est vrai que de nos jours, les IDE offrent la possibilité d'afficher le DDL d'une table, mais dans des environnements plus simples comme SQL Plus, cela peut être très pratique.
ÉDITER
une situation plus générale: fondamentalement, lorsque nous devons utiliser une procédure PL / SQL dans une instruction SQL standard, ou lorsque nous voulons appeler une procédure à partir de la ligne de commande:
select my_function(<input_params>) from dual;
les deux recettes sont extraites du livre «Oracle PL / SQL Recipes» de Josh Juneau et Matt Arena
Le DUAL est une table spéciale à une ligne et une colonne présente par défaut dans toutes les bases de données Oracle. Le propriétaire de DUAL est SYS.
DUAL est une table créée automatiquement par Oracle Database avec les fonctions de données. Il est toujours utilisé pour obtenir les fonctions des systèmes d'exploitation (comme la date, l'heure, l'expression arithmétique, etc.)
SELECT SYSDATE from dual;