Indices关键字主要用于处理稀疏数组的处理。

FORALL..IN 1..array.count, 当array稀疏时,会提示错误,某个元素不存在。

这个时候,使用indices可以跳过此影响。indices关键字在FORALL中表示引用数组下标

FORALL i IN INDICES OF l_tab

INSERT INTO forall_test VALUES l_tab (i);

测试脚本:

DECLARE

TYPE t_forall_test_tab IS TABLE OF forall_test%ROWTYPE;

l_tab t_forall_test_tab := t_forall_test_tab();

BEGIN

FOR i IN 1 .. 1000 LOOP

l_tab.extend;

l_tab(l_tab.last).id := i;

l_tab(l_tab.last).code := to_char(i);

l_tab(l_tab.last).description := 'Description: ' || to_char(i);

END LOOP;

-- Make collection sparse.

l_tab.delete(301);

l_tab.delete(601);

l_tab.delete(901);

dbms_output.put_line('l_tab.count = '||l_tab.count);

EXECUTE IMMEDIATE 'truncate TABLE forall_test';

dbms_output.put_line('start forall');

BEGIN

-- This will fail due to sparse collection.

FORALL i IN l_tab.first .. l_tab.last

INSERT INTO forall_test VALUES l_tab (i);

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line(SQLERRM);

END;

EXECUTE IMMEDIATE 'truncate TABLE forall_test';

dbms_output.put_line('start FORALL INDICES of');

-- This works fine with sparse collections.

FORALL i IN INDICES OF l_tab

INSERT INTO forall_test VALUES l_tab (i);

--这里会抛错,提示index[301]元素不存在

/*FORALL i IN 1..l_tab.count

INSERT INTO forall_test VALUES l_tab (i);*/

END;

脚本输出:

l_tab.count = 997

start forall

ORA-22160: element at index [301] does not exist

start FORALL INDICES of

另有VALUES OF,表示引用数组的值。

DECLARE

TYPE t_forall_test_tab IS TABLE OF forall_test%ROWTYPE;

TYPE t_idx_tab IS TABLE OF BINARY_INTEGER;

l_tab     t_forall_test_tab := t_forall_test_tab();

l_idx_tab t_idx_tab := t_idx_tab();

BEGIN

FOR i IN 1 .. 1000 LOOP

l_tab.extend;

l_tab(l_tab.last).id := i;

l_tab(l_tab.last).code := to_char(i);

l_tab(l_tab.last).description := 'Description: ' || to_char(i);

IF MOD(i, 100) = 0 THEN

l_idx_tab.extend;

l_idx_tab(l_idx_tab.last) := i;

END IF;

END LOOP;

EXECUTE IMMEDIATE 'truncate TABLE forall_test';

-- This works fine with sparse collections.

FORALL i IN VALUES OF l_idx_tab

INSERT INTO forall_test VALUES l_tab (i);

/*

FORALL i IN  1..l_idx_tab.count

INSERT INTO forall_test VALUES l_tab (i);*/

END;

脚本取自:

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

oracle indices,Oracle PL/SQL INDICES相关推荐

  1. Oracle Study之--PL/SQL Developer软件错误

    Oracle Study之--PL/SQL Developer软件错误 博文在51cto和CSDN同时开通 系统环境: 操作系统: Windows  XP(64) 软件:          PL/SQ ...

  2. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  3. 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程

    [学亮IT手记]oracle远程连接工具PL/SQL Developer的安装使用教程 客户端远程连接oracle,可以使用oracle自带的连接工具sqlplus,instanceclient_12 ...

  4. Windows 7 下安装 Oracle 数据库和 PL/SQL Developer

    win7下无论是32bits还是64bits,建议只安装oracle 11g 32bits,然后直接安装pl/sql developer,不需要额外的配置,就可以通过pl/sql developer来 ...

  5. 免安装Oracle客户端使用PL/SQL连接Oracle

    免安装Oracle客户端使用PL/SQL连接Oracle       大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的.有没要想过不安装Oracle客户端直接连接Orac ...

  6. Oracle如何使用PL/SQL调试存储过程

    Oracle如何使用PL/SQL调试存储过程 PL/SQL中提供了[调试存储过程]的功能,可以完成存储过程的预编译与测试. 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要.在 ...

  7. Oracle实验五 PL/SQL编程

    Oracle实验五 PL/SQL编程 [实验目的] 熟悉PL/SQL的数据类型和书写规则 熟悉控制结构和游标的使用 编写和运行函数.过程和触发器 [实验内容] 编写脚本文件,调试运行脚本文件,并记录结 ...

  8. oracle 作业调度里pl/sql怎么写,PL/SQL实现Oracle数据库任务调度

    PL/SQL实现Oracle数据库任务调度 PL/SQL实现Oracle数据库任务调度 正在看的ORACLE教程是:PL/SQL实现Oracle数据库任务调度.摘要:本文主要就数据库恢复与系统任务的调 ...

  9. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /** 声明部分--定义常量.变量.复杂数据类型.游标.用户自定义异常*/ BEGIN /** 执行部分 ...

  10. PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...

    标签 PostgreSQL , Oracle , 函数稳定性 , stable , immutable , volatile , DETERMINISTIC 背景 Oracle创建pl/sql函数时, ...

最新文章

  1. OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换
  2. 目标检测分割--BlitzNet: A Real-Time Deep Network for Scene Understanding
  3. c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
  4. nodeJS 事件绑定
  5. k8s核心技术-配置管理_ConfigMap---K8S_Google工作笔记0037
  6. 读取swagger配置文件里的内容
  7. [转]pip – pip安装和使用教程
  8. java 快速排序算法简单_Java 快速排序算法的简单说明及实现
  9. 斐讯K3c基于frp内网穿透
  10. μc/os-II原理简介(笔记)
  11. linux查看日志内存,linux查看日志、磁盘、cpu、内存使用情况及清理磁盘,日志等。你需要的linux常用基本操作都在这里!!!...
  12. ps 透明底和改变颜色
  13. Smoke Loader、AZORult***通过虚假海啸警报传播到了日本
  14. 机器学习基石(林轩田)第一章 笔记与感悟总结
  15. python之最大公约数
  16. PowerBuilder中图片文件的处理
  17. 大数据元数据管理系统有哪些功能
  18. Linux sed命令的用法介绍
  19. python常用英文单词怎么写_python常用150个英文单词
  20. cityscapes数据集具体使用方法

热门文章

  1. CentOS7下安装 mysql5.7.25(glibc版)(可用)
  2. 一键安装nginx(auto_nginx_install.sh
  3. win 10专业版中虚拟机里面无法按打开centos镜像
  4. 在Linux系统中允许或拒绝SSH访问特定用户或组的方法
  5. Httpclient gzip 乱码问题解决
  6. WCF中因序列化问题引起的异常和错误。
  7. 异步 HttpContext.Current 为空null 另一种解决方法
  8. Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题
  9. 解决UE4 Launcher启动速度极慢的方法
  10. 在package.json中使用git URL依赖分支或标记?