1
第11章 PL/SQL高级特性
2
主要内容
集合
批绑定
动态SQL
利用PL/SQL实现分页查询
3
集合
集合概述
索引表
嵌套表
可变数组
集合类型在数据库中的应用
4
概述
复合类型分为:
记录类型:多个不同类型分量的集合,类似于高级语言中的结构体类型。
集合类型:多个相同类型分量的集合,类似于高级语言中的数组类型。
集合类型分为
索引表(Index-By Table)
嵌套表(Nested Table)
可变数组(Varray)
应用
先定义集合类型,然后利用集合类型定义集合类型变量
5
索引表
索引表概念
索引表的定义
索引表中元素的赋值和引用
索引表中元素的添加、修改
索引表中元素的删除
集合类型的属性和方法
6
(1)索引表概念
概念
索引表类型是Oracle中最早引入的集合类型,是相同类型数据的集合,类似于高级语言中的数组,但与数组有很大的不同,其索引值没有固定的上下限,即元素个数是不受限制的,而且其索引值可以是无序的。
7
(2)索引表的定义
索引表类型的定义语法为
TYPE index_table IS TABLE OF element_type
INDEX BY BINARY_INTERGER| PLS_INTEGER|
VARCHAR2(n);
参数说明
element_type:可以是基本数据类型、用户自定义类型,也可以通过%TYPE或%ROWTYPE获取的类型,但不能为BOOLEAN,NCHAR,NVARCHAR,NCLOB,REF CURSOR类型;
INDEX BY:指定索引值的类型,可以是BINARY_INTERGER,PLS_INTEGER或VARCHAR2类型。
8
定义了索引表类型后,就可以利用该类型定义索引表变量。
TYPE nametab IS TABLE OF VARCHAR2(25) INDEX BY BINARY_INTEGER;
TYPE deptnotab IS TABLE OF NUMBER(2) INDEX BY VARCHAR2(10);
v_names nametab;
v_deptnos deptnotab;
9
(3)索引表中元素的赋值和引用
引用索引表变量元素或为元素赋值形式为
index_table_name(index)
index_table_name(index):=new_value;
注意:
元素的索引值可以是无序的;
当为不存在的元素赋值时,会自动创建该元素;
当引用不存在的元素时,会导致NO_DATA_FOUND异常。
10
DECLARE
TYPE indextable IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
v_numbers indextable;
BEGIN
FOR i IN 1..5 LOOP
v_numbers(i) := i*10;
END LOOP;
FOR i IN 1..5 LOOP ('v_numbers('||i||'):'||v_numbers(i));
END LOOP;
BEGIN
('v_numbers(6): ' || v_numbers(6));
EXCEPTION
WHEN NO_DATA_FOUND THEN
('No data found reading
v_Numbers(6)!');
END;
END;
紫竹:“水墨硅谷”的诞生——紫竹:打造中国的“水墨硅谷” 来自淘豆网m.daumloan.com转载请标明出处.