PLSQL中集合使用笔记1
总体中PLSQL中的集合大致有:
1.索引表,也称为关联数组,可以让我们使用数字或字符串作下标来查找元素。(这有点和其他语言中的哈希表相类似。)
2.嵌套表可以容纳任意个数的元素,使用有序数字作下标。我们可以定义等价的SQL类型,把嵌套表存到数据库中去,并通过SQL语句进行操作。
3.变长数组能保存固定数量的元素(但可以在运行时改变它的大小),使用有序数字作为下标。同嵌套表一样,也可以保存到数据库中去,但灵活性不如嵌套表好。
理解嵌套表基本使用
在数据库中,嵌套表可以被当作单列的数据表来使用。Oracle在往嵌套表中存放数据时是没有特定顺序的。但是,当我们把检索出来的数据存放在PL/SQL变量时,所有行的下标就会从1开始顺序编号。这样,就能像访问数组那样访问每一行数据。
要点:
1.1 从1开始,不是从0开始。且必须从1开始。
1.2 没有上限,若是需要扩展,extend以下。
1.3 定义语法:
TYPE test IS TABLE OF varchar2(20);//定义个类型为字符串的嵌套表,表名:test。
1.4 使用案例:将查询中的数据存放到嵌套表中:
-- 定义嵌套表
-- 定义游标
-- 将数据放入嵌套表中
--循环遍历嵌套表
总体中PLSQL中的集合大致有:
1.索引表,也称为关联数组,可以让我们使用数字或字符串作下标来查找元素。(这有点和其他语言中的哈希表相类似。)
2.嵌套表可以容纳任意个数的元素,使用有序数字作下标。我们可以定义等价的SQL类型,把嵌套表存到数据库中去,并通过SQL语句进行操作。
3.变长数组能保存固定数量的元素(但可以在运行时改变它的大小),使用有序数字作为下标。同嵌套表一样,也可以保存到数据库中去,但灵活性不如嵌套表好。
理解嵌套表基本使用
在数据库中,嵌套表可以被当作单列的数据表来使用。Oracle在往嵌套表中存放数据时是没有特定顺序的。但是,当我们把检索出来的数据存放在PL/SQL变量时,所有行的下标就会从1开始顺序编号。这样,就能像访问数组那样访问每一行数据。
要点:
1.1 从1开始,不是从0开始。且必须从1开始。
1.2 没有上限,若是需要扩展,extend以下。
1.3 定义语法:
TYPE test IS TABLE OF varchar2(20);//定义个类型为字符串的嵌套表,表名:test。
1.4 使用案例:将查询中的数据存放到嵌套表中:
-- 定义嵌套表
TYPE m_table IS TABLE OF varchar2(200); --定义嵌套表
mp m_table := m_table(); --新建一个类型
-- 定义游标
cursor c_test is
select p.testid from test_table p where p.roleid = '22';
-- 将数据放入嵌套表中
for cc in c_test loop
mp.extend;
i_int := i_int + 1;
mp(i_int) := cc.testid;
end loop;
--循环遍历嵌套表
for j in mp.first .. mp.last loop
dbms_out.put_line(j);
end loop;