oracle10g的forall功能加强[@more@]In Oracle Database 10g, PL/SQL now offers two new clauses in the FORALL statement, INDICES OF and VALUES OF, which allow you to choose very selectively which rows from the driving array should be processed by the extended DML statement.

看个例子:

--all_orders所有订单;new_records新增加订单(状态1);orders_archive无效订单(状态0)

create table all_orders(id number(18) primary key,mc varchar2(60),order_status number(2));

create table new_orders(id number(18) primary key,mc varchar2(60),order_status number(2));

create table orders_archive(id number(18) primary key,mc varchar2(60),order_status number(2));

insert into all_orders values(1,'mc1',0);

insert into all_orders values(2,'mc2',2);

insert into all_orders values(3,'mc3',2);

insert into all_orders values(4,'mc4',2);

insert into all_orders values(5,'mc5',1);

insert into all_orders values(6,'mc6',0);

insert into all_orders values(7,'mc7',1);

insert into all_orders values(8,'mc8',1);

insert into all_orders values(9,'mc9',1);

insert into all_orders values(10,'mc10',1);

insert into all_orders values(11,'mc11',0);

insert into all_orders values(12,'mc12',1);

insert into all_orders values(13,'mc13',1);

insert into all_orders values(14,'mc14',1);

insert into all_orders values(15,'mc15',1);

insert into all_orders values(16,'mc16',1);

insert into all_orders values(17,'mc17',0);

insert into all_orders values(18,'mc18',1);

insert into all_orders values(19,'mc19',1);

insert into all_orders values(20,'mc20',1);

commit;

SET SERVEROUTPUT ON

DECLARE

TYPE orders_type IS TABLE OF all_orders%ROWTYPE;

TYPE orders_index_type IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER ;

orders_archive orders_type;

new_order orders_type;

all_order orders_type;

orders_archive_index orders_index_type;

order_status INTEGER;

new_orders_count INTEGER := 0;

old_orders_count INTEGER := 0;

BEGIN

SELECT * BULK COLLECT INTO all_order FROM all_orders;

new_order := all_order;

FOR i IN all_order.FIRST .. all_order.LAST LOOP

order_status := all_order(i).order_status ;

IF ( order_status = 2 ) THEN

new_order.DELETE(i);

ELSE

new_orders_count := new_orders_count+1;

END IF;

IF order_status = 0 THEN

orders_archive_index(old_orders_count) := i;

old_orders_count := old_orders_count+1;

END IF;

END LOOP;

DBMS_OUTPUT.PUT_LINE('Inserting '|| TO_CHAR(new_orders_count) || ' new ORDERS into NEW_ORDERS table');

DBMS_OUTPUT.PUT_LINE(' ');

FORALL indx IN INDICES OF new_order

INSERT INTO new_orders VALUES all_order(indx);

DBMS_OUTPUT.PUT_LINE('Inserting ' ||TO_CHAR(old_orders_count) ||' old ORDERS data into ORDERS_ARCHIVE table');

FORALL indx IN VALUES OF orders_archive_index

INSERT INTO orders_archive VALUES all_order(indx);

commit;

END;

/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/272588/viewspace-909708/,如需转载,请注明出处,否则将追究法律责任。

oracle中forall in,oracle10g的forall功能加强相关推荐

  1. 在Oracle中实现自增加ID的功能

    我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,在SQL SERVER 中有系统自带的ID自增功能,但是在ORACLE中没有这样的功能,我们可以通过采取以下方法实现自动增加ID的功 ...

  2. oracle中master实例,Oracle10g/11g RAC数据库中的Master实例、Owner实例和Past Image的概念PART3...

    实验第33步: 下面来验证: 节选实例1上的/u01/app/oracle/admin/RDBA/udump/rdba1_ora_18378.trc: /u01/app/oracle/admin/RD ...

  3. oracle中master实例,Oracle10g/11g RAC数据库中的Master实例、Owner实例和Past Image的概念PART2...

    实验第21步: 在任一个实例上执行: selectcount(*)from myviewwhere "OWNER_Instance" <> "MASTER_I ...

  4. 在Oracle中使用JDBC插入功能

    介绍 在本文中,我将显示一个示例,说明如何使用Oracle支持的JDBC批量插入功能,这些功能特定于Oracle. 有关为什么可能希望一般使用批量插入的更多详细信息,例如,在某些情况下需要考虑性能,请 ...

  5. oracle中dbms_DBMS中的功能依赖性和属性关闭

    oracle中dbms 功能依赖 (Functional Dependency) A relational Database management System (RDBMS) represents ...

  6. mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()

    1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一 ...

  7. 【mysql】使用变量实现类似oracle中lag函数功能

    mysql使用变量实现类似oracle中的lag函数功能 说明: 有一个订单表,每次下单都会记录是否使用了券,现模拟一个需求,将订单表插入日志表达到记录用户上一次是否用券以及此订单是否用券的情况 #- ...

  8. oracle中yest,DBFS就是Oracle数据库11gR2中提供的能够将Oracle数据库当成文件系统来使用的功能...

    简单的来说,DBFS就是Oracle数据库11gR2中提供的能够在Linux操作系统中将Oracle数据库当成文件系统来使用的功能.在DBFS内部,文件是以SecureFiles LOBs(对比与以前 ...

  9. JAVA笔记-Oracle中存储过程编写类似于MySQL的replace功能

    这里以Oracle 18c为例 此处实现的功能是类似与mysql的replace into的功能. 原理就是写个存储过程,接收参数,先删,然后再插入. SQL语句如下: CREATE OR REPLA ...

最新文章

  1. python代码用c语言封装_树莓派开发ADC芯片CS1237(C语言和python库开发)
  2. 使用yum时,保留下载包设置
  3. ubuntu使用rabbitmq的一些基本命令
  4. python怎么重命名word文件,Python读取word文本操作详解
  5. tomcat配置多站点
  6. uniapp图片自适应_uni-app下input组件基于内容自适应宽度的实现
  7. H236各个版本的区别总结
  8. Gantt - attachEvent事件监听 - (必须)拥有返回值事件
  9. gnuplot使用简介
  10. 通达信VCP形态选股公式,憋了好几天才写出来
  11. 《数据库系统原理》教学上机实验报告
  12. Sketch网页截屏插件设计开发
  13. SAS学习第9章:卡方检验之适合性检验与独立性检验
  14. 【新人填坑021】uwsgi部属jdango填坑
  15. Flex Builder 3的破解
  16. 10岁男孩玩游戏花掉1万2,和妈妈打欠条通过家务和学习成绩“还债”
  17. 华为OD机试 - 二进制差异数(Java JS Python)
  18. 盘点世界十大末日预言
  19. csgo卡住关不掉_csgo卡屏断开连接解决方法 | 手游网游页游攻略大全
  20. 可节省60% MCU开发成本的NV080D-S8,单片机语音芯片在恒温碗上的应用

热门文章

  1. spark知识点八万字长文最全汇总和高频面试题目
  2. 深度学习核心技术精讲100篇(十)-机器学习模型融合之Kaggle如何通过Stacking提升模型性能
  3. 贝叶斯学习--极大后验概率假设和极大似然假设
  4. 【LeetCode从零单排】No221.Maximal Square
  5. 大牛带你深入SpringBoot:自定义Endpoint 及实现原理
  6. 亿级别记录的mongodb批量导入Es的java代码完整实现
  7. 同程旅游缓存系统(凤凰)打造Redis时代的完美平台实践
  8. Jodd-vtor验证框架
  9. 深入netty源码解析之一数据结构
  10. 理解OAuth 2.0--转