oracle数据处理中使用foreach, from dual,union all组合成临时表

概念:
在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取专,常用在没有目标表的属Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。

Dual简单的说就是一个空表,Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用。常用来通过select语句计算常数表达式。

特性:

1、Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——‘X’。

例如:执行select * from dual,里面只有一条记录;执行insert into dual values(‘Y’)后,再次查询dual表,仍然显示一条记录。

2、是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在

例如:执行一个查看当前日期的语句 select sysdate from dual,这条语句在放在放在任何一个oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。

因为select * form dual可以组成一条临时数据的dual表,通过union all就可以变成多条数据的临时表

<foreach collection="list" index="index" item="item" open=""
                 close="" separator="union all">
            SELECT
            #{item.ID,jdbcType=NUMERIC} as ID,
            #{item.NAME,jdbcType=NUMERIC} as NAME,
            #{item.sex,jdbcType=STRING} as sex
            FROM dual
</foreach>
<insert id="insertCitiFixData">
	insert into C167969OMC.CITIFIX_TAG_DESCRIPTION
	select A.* FROM (
	<foreach collection="map" index="key" item="value" separator="union all">
		select
		#{key, jdbcType=CLOB} as field_spec,
		#{value} as field_description
		from dual
	</foreach>
	) A

</insert>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值