Oracle Dual表的使用
Dual在oracle中的使用非常频繁,看到别人使用,有点疑惑。为啥要偏偏使用这张表呢?
今天就这个疑问baidu了下。现在总结一下。
1.Dual是一张系统表(有人称其为:虚拟表),只有一个字段:DUMMY VARCHAR2(1)允许为空
2.因为在DBMS中查询语句需要:select from 表这种结构,所以当查询系统时间,虚拟字段,oracle函数调用时,
为了构造select from 这种结构,我们常常使用dual表,比如
No1:select sysdate from dual
No2:select fun_common_test(66) from dual
3. Dual只有一条数据。我在PL/SQL修改Dual表添加一条数据时,
系统会报"权限不足"的错误。所以可以给变量赋值的时候直接
4.用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行(貌似与第2条重复)
No1:select 3+4 from dual
dual表的一种巧妙使用:
情况:
在存储过程活着函数中给变量赋值,
如果查询无结果的话,
select into 语句会报错:
oracle01403:未找到数据错误。
select CBIC_SC_VALUE
into RED_FLAG
from cbizconfig
where CBIC_ORG_ID = 66
and CBIC_SC_CODE = 'QUERY_RED_WHEN_INVOICE';
查询无记录,赋值就会报错。
处理方法1:判断查询的记录,如果记录小于1时,不进行赋值的操作:
select count(*)
into ICOUNT
from cbizconfig
where CBIC_ORG_ID = 66
and CBIC_SC_CODE = 'QUERY_RED_WHEN_INVOICE';
if ICOUNT > 0 then
select CBIC_SC_VALUE
into RED_FLAG
from cbizconfig
where CBIC_ORG_ID = 66
and CBIC_SC_CODE = 'QUERY_RED_WHEN_INVOICE';
end if;
第2种办法:
Select
(select CBIC_SC_VALUE from cbizconfig
where CBIC_ORG_ID = 66
and CBIC_SC_CODE = 'QUERY_RED_WHEN_INVOICE') into RED_FLAG
from dual
这样巧妙的避开了无记录赋值的情况。
--这种写法还需要好好的领会。
分享到:
相关推荐
oracle之dual表的一些 oracle之dual表的一些 oracle之dual表的一些
详解Oracle数据库中DUAL表的使用
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录
oracle 不存在dual情况下注入.doc
1、dual虚表的结构2、查询dual虚表中的记录3、对dual虚表做增、删、改操作普通用户对dual虚表只有查询权限,没有增、删、改的权限 1、执行Oracl
针对oracle中dual表的说明和一下实例。
oracle_dual详解 oracle_dual详解
oracle数据库中的dual续表详细解读,适合数据库中级水平者学习。
oracle、数据库、dual 有关oracle的一点小知识点
第5章 Oracle数据表对象(教学视频:42分钟) 63 5.1 Oracle表空间 63 5.1.1 Oracle表空间简介 63 5.1.2 创建Oracle表空间 64 5.1.3 查看表空间 66 5.1.4 修改数据库默认表空间 67 5.1.5 修改表空间名称 68 ...
BLOG_Oracle_lhr_DUAL系列BLOG_Oracle_lhr_DUAL系列BLOG_Oracle_lhr_DUAL系列BLOG_Oracle_lhr_DUAL系列
dual表是oracle中的一部分,很有用的
dual是名义表,不存任何东西. Oracle客户端连接Oracle服务 全文共9页,当前为第4页。 Oracle客户端连接Oracle服务 全文共9页,当前为第4页。 Oracle远程连接数据库总结 Oracle代码 : orCL = (DESCRIPTION = ...
25. 安装Oracle后,经常使用的修改表空间的SQL代码 26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何...
2.怎么获取有哪些用户在使用数据库 select username from v$session; 3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能...
select sysdate from dual 等等一些关于oracle的查询当前时间,日期的一些sql语句的
1、集合操作 2、EXISTS和NOT EXISTS的使用 3、WITH字句 4、MERGE INFO 合并资料 5、层次查询...22、专题-NULL和DUAL详解 23、专题-时间、数字、字符格式详解 24、专题-ORACLE字符集问题 25、专题-随机值查询
<br> select sys_context( userenv , ip_address ) from dual; <br> 如果是登陆本机数据库,只能返回127.0.0.1,呵呵 <br> 20. unix 下怎幺调整数据库的时间? <br> su -root <br> date -u ...
oracle中日期类型与unix 时间戳的转换, Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。...SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;