广告
返回顶部
首页 > 资讯 > 数据库 >PLSQL集合
  • 754
分享到

PLSQL集合

2024-04-02 19:04:59 754人浏览 薄情痞子
摘要

PLsql集合索引表(或者叫做关联数组,associative array )嵌套表(nested table)变长数组(varray)二维数组(多层集合)索引表---创建索引表类型的语法如下所示:&nbs

PLsql集合

  • 索引表(或者叫做关联数组,associative array )

  • 嵌套表(nested table)

  • 变长数组(varray)

  • 二维数组(多层集合)

索引表

---创建索引表类型的语法如下所示:               

TYPE  type_name IS TABLE OF  element_type

   INDEX BY index_type;  

table_name  TYPE_NAME;

--其中,element_type 指明集合中存放的数据的类型

--index_type指定下标的类型。只能是整型或者字符串

--使用下标来引用索引表中的单个元素,如下所示:

table_name(index);

---示例1:分别声明一个游标和一个索引表类型,游标

--从student表中检索出前10个学生的姓名。遍历游标,

--将每个学生的姓名保存到一个索引表类型的集合中,

--然后从集合中取出每个学生的姓名打印到屏幕上

declare
  --声明游标,保存10个学生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10; 
  --声明索引表集合类型
 type last_name_type is table of student.last_name%type
   index by pls_integer;   
  --声明集合变量
 last_name_tab last_name_type;
  --声明下标变量
 v_index pls_integer := 0;
begin
  --遍历游标
  forr_student in c_student loop
   v_index := v_index + 1;
   --将学生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍历集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop;
  --注意:引用不存在的集合元素会抛出NO_DATA_FOUND异常。
  --例如
 --dbms_output.put_line(last_name_tab(11));
end;

嵌套表

创建嵌套表的语法如下所示:

TYPE type_name IS TABLEOF element_type;

table_name  TYPE_NAME;

--该声明非常类似于索引表的声明,只是没有INDEXBY子句。

--嵌套表的下标类型固定为Integer整型

declare
  --声明游标,保存10个学生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10;   
  --声明嵌套表集合类型
 type last_name_type is table of student.last_name%type;
  --声明集合变量。必须使用构造器函数进行初始化
  last_name_tab last_name_type := last_name_type();
  --声明下标变量
  v_indexpls_integer := 0;
begin
  --遍历游标
  forr_student in c_student loop
   v_index := v_index + 1;
   --必须调用extend方法添加存储空间
    last_name_tab.extend;         --和数组一样,每赋值一个元素需调用extend
   --将学生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍历集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop; 
end;

变长数组

创建变长数组的语法如下所示:

TYPE  type_name IS VARRAY(size_limit) OFelement_type ;

varray_name  TYPE_NAME;

--size_limit:最大元素个数

 

--它和嵌套表类型的区别是:他有最大元素个数限制

--修改上例,使用保长数组类型

declare
  --声明游标,保存10个学生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10;
  --声明变长数组集合类型
  type last_name_type is varray(10) of student.last_name%type; 
  --声明集合变量。必须使用构造器函数进行初始化
  last_name_tab last_name_type := last_name_type();
  --声明下标变量
 v_index pls_integer := 0;
begin
  --遍历游标
  forr_student in c_student loop
   v_index := v_index + 1;
   --必须调用extend方法添加存储空间
    last_name_tab.extend;   --每赋值一个元素需调用extend
   --将学生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍历集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop; 
end;

--可见,变长数组在编码使用的限制和嵌套表完全相同。

二维数组

oracle 9i开始,PL/SQL允许创建元素类型为集合类型的集合。这种集合被称为多层集合。

二维数组:有一个一维数组,其中的每个元素又是一个一维数组,那么这个一维数组叫做二维数组。

为引用这个多层集合中单独的元素,需要使用如下语法:

varray_name(subscript  of the outer  varray)

          (subscript  of the  inner varray)

declare
  --声明变长数组类型
  typevarray_type1 is varray(4) of number;
  --声明多层集合(二维数组)
  typevarray_type2 is varray(3) of varray_type1;
  varray1varray_type1 := varray_type1(2,4,6,8);
  varray2varray_type2 := varray_type2(varray1);
begin
 varray2.extend;  --调用extend
  varray2(2):= varray_type1(1,3,5,7);
 varray2.extend;  --调用extend
  varray2(3):= varray_type1(8,8,8,8); 
  --遍历集合
  for i in1..3 loop
    for j in1..4 loop
      dbms_output.put_line('varray2('||i||')('||j
      ||')='||varray2(i)(j));
    end loop;
  end loop;
 dbms_output.put_line('-------------------------------');
 
  --遍历集合,实际的写法
  for i invarray2.first..varray2.last loop
    for j invarray2(i).first..varray2(i).last loop
     dbms_output.put_line('varray2('||i||')('||j
      ||')='||varray2(i)(j));
    end loop;
  end loop;
end;
/


您可能感兴趣的文档:

--结束END--

本文标题: PLSQL集合

本文链接: https://www.lsjlt.com/news/44392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PLSQL集合
    PLSQL集合索引表(或者叫做关联数组,associative array )嵌套表(nested table)变长数组(varray)二维数组(多层集合)索引表---创建索引表类型的语法如下所示:&nbs...
    99+
    2022-10-18
  • 【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
    文章目录 一、List 创建与元素获取二、安全获取集合元素1、getOrElse 函数2、getOrNull函数 三、List 创建与元素获取代码示例四、MutableList 可变列表集...
    99+
    2023-09-12
    kotlin list Set Map MutableList
  • plsql的字符集如何设置
    在PL/SQL中,字符集可以通过设置NLS_CHARACTERSET参数来进行配置。NLS_CHARACTERSET参数决定了数据库...
    99+
    2023-10-28
    plsql
  • plsql怎么修改oracle字符集
    要修改Oracle数据库的字符集,可以按照以下步骤进行操作:1. 首先,备份数据库以防止数据丢失。可以使用Oracle提供的工具或者...
    99+
    2023-09-29
    plsql oracle
  • Java List 集合取 交集、并集、差集、补集 Java集合取交集、Java集合并集
            Java List 集合取 交集、并集、差集、补集 Java集合取交集、Java集合并集 一、概述         1、在日常开发中:       经常会遇到对2个集合的操作,例如:2个集合之间取相同的元素(交集),2个集...
    99+
    2023-08-31
    Java List集合交集 Java List集合并集 Java List集合交集差集 List 集合交易 并集 List集合补集差集
  • 【PLSQL】PLSQL基础
    文章目录 一:记录类型1.语法2.代码实例 二:字符转换三:%TYPE和%ROWTYPE1.%TYPE2.%ROWTYPE 四:循环1.LOOP2.WHILE(推荐)3.数字式循环 五:游标1.游标定义及读取2.游标属性...
    99+
    2023-08-30
    学习 笔记 oracle
  • plsql导出数据字符集怎么设置
    在PL/SQL中导出数据时,可以通过设置NLS_LANG环境变量来指定数据的字符集。NLS_LANG的格式为"NLS_LANGUAG...
    99+
    2023-09-29
    plsql
  • C#集合之自定义集合类
    一、非泛型方式,继承自CollectionBase public class MyClass { public static void Main() { ...
    99+
    2022-11-13
  • plsql中获取字符集的步骤是什么
    在 PL/SQL 中获取字符集的步骤如下: 使用 `SELECT value INTO` 语句从系统视图 `V$NLS_P...
    99+
    2023-10-28
    plsql
  • python3 集合
    集合: 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称做集合元素。 集合对象是一组无序排列的可哈希的值。 集合有两种类型: 1、可变集合set 2、不可变集合...
    99+
    2023-01-31
  • python-集合
                        Set (集合)1 Set 定义:set可以用{}表示,但是不能用s{}这样定义,如果这样写,python编辑器会默认为是字典。             这样定义就不会是字典,里面加一些内容。 2 元...
    99+
    2023-01-31
    python
  • python3-集合
    # Auther: Aaron Fan'''集合是一个无序的,不重复的数据组合,它的主要作用如下:去重,把一个列表变成集合,就自动去重了关系测试,测试两组数据之前的交集、差集、并集等关系'''list_1 = [1,3,4,7,3,6,7,...
    99+
    2023-01-31
  • python 集合
    集合是一个无序的,不重复的数据组合,它的主要作用如下:去重,把一个列表变成集合,就自动去重了关系测试,测试两组数据之前的交集、差集、并集等关系去重将列表转换为集合使用set()方法list_1 = [1,2,4,5,2,...
    99+
    2023-01-30
    python
  • python集合
    1.集合的定义   * 集合是无序的,不重复的数据组合。  * 集合里不能定义列表。      2.集合的关系测试操作   3.集合的的添加   haha1.add("ss")   在集合后添加一项    haha1.update(["sd...
    99+
    2023-01-31
    python
  • python 集合
    1、定义集合是一个无序的,不重复的数据组合,它的主要作用如下:去重,把一个列表变成集合,就自动去重了;关系测试,测试两组数据之间的交集,差集,并集等关系。2、增加元素:s.add(): 吧括号里的元素添加到集合s当中,如果添加的元素已经在列...
    99+
    2023-01-31
    python
  • Python11 集合
    集合 list_1 = [1,2,3,4,2,4,7,8,9] #列表中有重复的内容 list_1 = set(list_1) #将列表转成集合 print (list_1,type(list_1))...
    99+
    2023-01-31
  • python,集合
    ************************集合***********************总结可变数据类型: 列表, 字典, 集合不可变数据类型: 数值类型, 字符串, 元组- 可变数据类型实现某个功能, 直接改变可变的数据类型;-...
    99+
    2023-01-31
    python
  • python---集合
    集合是一个无序的,不重复的数据组合,它的主要作用是:1.去重,把列表变为集合就去重了。2.关系测试,测试两组数据之前的差集,交集,并集等关系#创建两个集合 list_1 = set([1,3,4,5,6,6,5,7,9]) list_2 =...
    99+
    2023-01-31
    python
  • python怎么向集合中添加集合
    在 Python 中,集合是一种无序且不重复的数据类型。要向集合中添加集合,可以使用 `update()` 方法。下面是一个示例:`...
    99+
    2023-09-27
    python
  • C#集合之不变集合的用法
    如果对象可以改变其状态,就很难在多个同时运行的任务中使用。这些集合必须同步。如果对象不能改变器状态,就很容易在多个线程中使用。Microsoft提供了一个新的集合库:Microsof...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作