oracle indices,Oracle PL/SQL INDICES
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相关推荐
- Oracle Study之--PL/SQL Developer软件错误
Oracle Study之--PL/SQL Developer软件错误 博文在51cto和CSDN同时开通 系统环境: 操作系统: Windows XP(64) 软件: PL/SQ ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程
[学亮IT手记]oracle远程连接工具PL/SQL Developer的安装使用教程 客户端远程连接oracle,可以使用oracle自带的连接工具sqlplus,instanceclient_12 ...
- Windows 7 下安装 Oracle 数据库和 PL/SQL Developer
win7下无论是32bits还是64bits,建议只安装oracle 11g 32bits,然后直接安装pl/sql developer,不需要额外的配置,就可以通过pl/sql developer来 ...
- 免安装Oracle客户端使用PL/SQL连接Oracle
免安装Oracle客户端使用PL/SQL连接Oracle 大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的.有没要想过不安装Oracle客户端直接连接Orac ...
- Oracle如何使用PL/SQL调试存储过程
Oracle如何使用PL/SQL调试存储过程 PL/SQL中提供了[调试存储过程]的功能,可以完成存储过程的预编译与测试. 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要.在 ...
- Oracle实验五 PL/SQL编程
Oracle实验五 PL/SQL编程 [实验目的] 熟悉PL/SQL的数据类型和书写规则 熟悉控制结构和游标的使用 编写和运行函数.过程和触发器 [实验内容] 编写脚本文件,调试运行脚本文件,并记录结 ...
- oracle 作业调度里pl/sql怎么写,PL/SQL实现Oracle数据库任务调度
PL/SQL实现Oracle数据库任务调度 PL/SQL实现Oracle数据库任务调度 正在看的ORACLE教程是:PL/SQL实现Oracle数据库任务调度.摘要:本文主要就数据库恢复与系统任务的调 ...
- Oracle数据库之PL/SQL程序基础设计
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /** 声明部分--定义常量.变量.复杂数据类型.游标.用户自定义异常*/ BEGIN /** 执行部分 ...
- PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...
标签 PostgreSQL , Oracle , 函数稳定性 , stable , immutable , volatile , DETERMINISTIC 背景 Oracle创建pl/sql函数时, ...
最新文章
- OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换
- 目标检测分割--BlitzNet: A Real-Time Deep Network for Scene Understanding
- c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
- nodeJS 事件绑定
- k8s核心技术-配置管理_ConfigMap---K8S_Google工作笔记0037
- 读取swagger配置文件里的内容
- [转]pip – pip安装和使用教程
- java 快速排序算法简单_Java 快速排序算法的简单说明及实现
- 斐讯K3c基于frp内网穿透
- μc/os-II原理简介(笔记)
- linux查看日志内存,linux查看日志、磁盘、cpu、内存使用情况及清理磁盘,日志等。你需要的linux常用基本操作都在这里!!!...
- ps 透明底和改变颜色
- Smoke Loader、AZORult***通过虚假海啸警报传播到了日本
- 机器学习基石(林轩田)第一章 笔记与感悟总结
- python之最大公约数
- PowerBuilder中图片文件的处理
- 大数据元数据管理系统有哪些功能
- Linux sed命令的用法介绍
- python常用英文单词怎么写_python常用150个英文单词
- cityscapes数据集具体使用方法
热门文章
- CentOS7下安装 mysql5.7.25(glibc版)(可用)
- 一键安装nginx(auto_nginx_install.sh
- win 10专业版中虚拟机里面无法按打开centos镜像
- 在Linux系统中允许或拒绝SSH访问特定用户或组的方法
- Httpclient gzip 乱码问题解决
- WCF中因序列化问题引起的异常和错误。
- 异步 HttpContext.Current 为空null 另一种解决方法
- Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题
- 解决UE4 Launcher启动速度极慢的方法
- 在package.json中使用git URL依赖分支或标记?