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
这样巧妙的避开了无记录赋值的情况。
--这种写法还需要好好的领会。
分享到:
相关推荐
了解`DUAL`表的基本特性和使用方法对于Oracle数据库的学习和应用具有重要意义。然而,需要注意的是,尽管可以对`DUAL`表进行插入和删除操作,但在实际应用中应避免这样做,以免破坏数据的一致性和完整性。
Oracle 数据库中 DUAL 表的使用 DUAL 表是 Oracle 数据库中一个特殊的表,它是任何用户都可以读取的公共表。DUAL 表的用途非常广泛,常用在没有目标表的 Select 语句块中。下面都是 DUAL 表的一些常见使用场景: ...
Dual 表的存在使得我们可以使用它来执行各种操作,以下是 Dual 表的一些应用场景: 1. 查看当前用户 使用 Dual 表我们可以很方便地查看当前用户的信息。例如,使用以下语句可以获取当前用户的名称: ```sql ...
Oracle数据库中的`dual`表是一个特殊的虚拟表,它的存在主要为了解决SQL语句的构造问题,尤其是当需要一个简单的上下文来执行表达式或函数时。由于`dual`表只包含一行且只有一个字段,因此它常被用于测试和演示目的...
- **兼容性考虑**:对于一些过时的产品(如Svrmgrl),它们可能无法正确处理`DUAL`表,但这不影响当前环境下`DUAL`表的正常使用。 #### 七、总结 `DUAL`表是Oracle数据库中的一个重要组成部分,它不仅简化了许多...
### Oracle Dual 表详解 #### 一、Oracle Dual 表简介 在Oracle数据库中,`DUAL`表是一个特殊的表,通常被用于执行简单的查询或计算。...对于Oracle数据库的初学者来说,掌握`DUAL`表的使用方法是非常有帮助的。
根据提供的文档标题、描述、标签以及部分内容,本文将围绕Oracle数据库中的SQL注入技术进行深入解析,特别是当目标系统中不存在`dual`表时如何进行有效的数据挖掘。 ### Oracle SQL注入基础 在讨论具体的技术细节...
Oracle Dual表详解 在Oracle数据库中,`DUAL`是一个特殊的表,主要用于测试和获取系统信息,如当前日期和时间。它由Oracle系统拥有的`SYS`模式下的一个表,同时通过`PUBLIC SYNONYM`为所有数据库用户提供了公共访问...
### Oracle 表空间收缩详解 #### 一、背景与需求 在Oracle数据库管理过程中,合理地管理和优化存储空间是非常重要的工作之一。有时,我们会遇到这样的情况:某个表空间占用的实际物理空间远大于其实际需要的空间,...
### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...
这个问题涉及到表空间的使用情况和配置,解决这个问题需要对Oracle数据库的表空间管理有深入的理解。 首先,我们可以通过SQL查询来查看Oracle数据库中所有表空间的大小和使用情况。以下SQL语句用于获取表空间名、总...
本文详细介绍了如何使用Oracle数据库中的`exp/imp`和`expdp/impdp`工具来导入导出分区表数据。通过创建一个简单的演示环境,我们演示了如何创建分区表、生成数据以及如何使用这些工具来完成数据的导入导出。这种能力...
Oracle 中 Dual 表的应用和数据类型知识点总结 Dual 表是 Oracle 数据库中一个特殊的系统表,它是一个虚拟表,实际上不占用任何存储空间。Dual 表最常用的应用场景是执行一些简单的查询操作,例如获取当前用户、...
Dual表是Oracle数据库中一个特殊的表,它是Oracle数据库中自带的表,由 SYS 模式所有,所有用户都可以访问它。Dual表只有一个列:DUMMY,其数据类型为VARCHAR2(1),表中只有一行数据:'X'。 Dual表的主要用途是: ...
DUAL虚表是Oracle系统中一个特殊的表,它总是只有一条记录。这个表的存在使得我们可以使用SELECT语句来执行一些有趣的事情,如获取当前用户、系统时间、主机名、 locale、随机数、序列号等。 首先,DUAL虚表的存在...
### PowerDesigner 创建 Oracle 数据库表并设置主键...以上步骤详细介绍了如何使用PowerDesigner 12.5创建Oracle数据库表,并设置主键列的自动增长功能。这将极大地提高数据库开发的效率,并确保数据的一致性和完整性。
序列可以在不使用表的情况下单独创建,也可以与表的触发器结合,以自动为新插入的行生成唯一ID。这在多用户环境下尤其有用,确保即使在高并发环境下也能正确地自增ID,避免了ID冲突。 创建序列的基本语法如下: ``...
本章节将详细介绍ORACLE表的管理,包括表的创建、索引的使用、表的物理存储结构等。 4.1 ORACLE表和数据类型 ORACLE表是数数据库的基本单元,用于存储数数据。表中存储的数数据可以是各种类型,如数字、字符、...
### Oracle 自带表知识点概述 #### 一、Oracle 自带表简介 Oracle 数据库系统包含了一些预定义的表,这些表通常被称作“Oracle 自带表”。它们主要用于数据库管理和测试场景,帮助用户理解 SQL 查询的基本操作。在...
在Oracle数据库中,XML数据可以被导入到表中以便进行存储和处理。本篇文章将详细介绍两种XML数据导入Oracle表的方法。 方法之一:使用SQL*Loader SQL*Loader是Oracle提供的一款强大的数据加载工具,它可以处理大量...