我们知道“Dual”是一个临时表,它恰好包含 1 个名为“dummy”的列,它是具有 1 个单行的“varchar2(1)”类型。该记录的值为“X”。varchar2 的大小为 1,这意味着它不应允许多个字符。现在我的问题是:如果它是 varchar2 类型,那么为什么它可以临时保存任何数据类型并且如果我们插入超过 1 个(大小)的字符,它(双重)如何接受它?例子:
SQL> desc dual
Name Null? Type
------------------------------- -------- ----
DUMMY VARCHAR2(1)
SQL> select sysdate from dual;
SYSDATE
---------
22-JAN-13
SQL> select 5*5 result from dual;
RESULT
---------
25
SQL> select 'Ankita' as "Name" from dual;
Name
------
Ankita
显然“SYSDATE”是 DATE 类型(不是 varchar2),“RESULT”是 NUMBER 类型(不是 varchar2)。'Ankita' 也多于 1 个单个字符,即 6 个字符。这应该与 varchar2 仅持有 1 并且也支持 6 的结构相矛盾。