oracle dual用法,oracle中的dual表
简介]dual是一个虚拟表,用来构成select的语法规则。oracle保证dual中始终只有一条记录。我们可以用它做很多事情。
Dual是一个虚拟表,用来构成select的语法规则。oracle保证dual中始终只有一条记录。我们可以用它做很多事情,如下所示:
1.若要查看当前用户,可以在SQL Plus中执行以下语句select user from dual
2.用于调用系统函数。
select to_char(sysdate, yyyy-mm-DD hh24:mi:ss )from dual;-获取当前系统时间。
从dual中选择SYS_CONTEXT(USERENV , TERMINAL );-获取主机名。
从dual中选择SYS_CONTEXT(USERENV , language );-获取当前区域设置
从dual中选择dbms _ random.random-得到一个随机数。
3.要获取序列的下一个值或当前值,请使用以下语句
从dual中选择your _ sequence.nextval-获取序列your_sequence的下一个值
从dual中选择your _ sequence.currval-获取序列your_sequence的当前值。
4、可作为计算器从dual中选择7 * 9;
-
Oracle系统中的对偶表是一个很神秘的表,很多在线用户都测试过。它只有一行和一列。事实上,它和系统中的其他表一样,可以执行插入、更新、删除和删除操作。但是不要掉表,否则会导致系统不可用,数据库无法启动,会报错ora-1092数据库启动崩溃。此时不要慌张,可以执行以下步骤进行恢复。您可以使用sys用户登录。
SQL从spfile创建pfile=d:pfile.bak
SQL立即关闭
在d:pfile.bak文件的末尾,添加一个:
复制依赖跟踪=假
重新启动数据库:
SQL启动pfile=d:pfile.bak
SQL创建表“sys”。“双重”
[处理此指令时出错]
=====
双重?有什么玄机?当你想获得ORACLE系统时间时,你不能简单地键入一行SQL吗?令人迷惑.
SQL从dual中选择sysdate
系统日期
-
2003年9月28日
哈哈,确实DUAL用起来很方便。但是你知道DUAL到底是什么吗,它有什么特殊的行为吗?来吧,让我们看看。首先,弄清楚什么是对偶:
SQL连接系统/管理器
已连接。
SQL select owner,object_name,object_type from dba_objects其中object _ name like“% DUAL %”;所有者对象名称对象类型
- - -
SYS DUAL表公共DUAL同义词
本来DUAL是一个属于SYS schema的表,后来以PUBLIC SYNONYM的形式被其他数据库用户使用。
再看它的结构:
SQL desc双重名称为空?类型
- - -
虚拟VARCHAR2(1)
结构化查询语言
只有一个名为DUMMY的字符列。
然后检查表格中的数据:
SQL从dual中选择dummy
假的
-
X
哦,只有一个记录。哑元的值是“X”。很正常。这没什么奇怪的。嗯,这里有一些精彩的东西!
插入记录:
SQL connect sys作为sysdba
已连接。
SQL insert into dual values( Y );
已创建1行。
SQL提交;
提交完成。
SQL select count(*)from dual;
计数(*)
-
2
到目前为止,一切正常。然而,当我们再次检查记录时,奇怪的事情发生了。
SQL select * from dual
假的
-
X
刚刚插入的记录不显示!明明DUAL表中有两条记录,却只显示了一条!
再删一次试试,强硬一点,全删!
从dual中删除SQL/*注意没有限定条件,试图删除所有记录*/
删除了1行。
SQL提交;
提交完成。
哈哈只删了一条记录,
SQL select * from dual
假的
-
Y
为什么会这样?SQL的语法对DUAL不起作用吗?带着这个问题,
从i query获得了甲骨文的一些官方信息。原来ORACLE对DUAL表的操作做了一些内部处理,尽量保证DUAL表只返回一条记录。当然,这种内部操作是看不见的。看来甲骨文真的蕴藏着无限的秘密!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。