PL/SQL:集合类型 (定义,分类,使用场景,集合方法)

这篇博客介绍了PL/SQL中的集合类型,包括索引表、嵌套表和变长数组。详细阐述了它们的定义、使用场景以及各自的方法,如exists、count、limit等。同时,讨论了不同集合类型的特性,如索引表的高效性、嵌套表的构造器函数以及变长数组的长度限制。还提到了多层集合的概念,强调了集合在处理多行单列数据中的重要性。
摘要由CSDN通过智能技术生成

COLLECTION

单行单列     变量    
单行多列     记录    
多行单列     集合    
多行多列     记录+集合

定义:

       集合是相同类型元素的组合。数据库中相当于"多行单列", 类似于数组, 使用唯一的下标来标识其中的每个元素


分类:

分类 语法 下标 元素个数 赋初始值 .extend 能否存在DB中
索引表 TYPE type_name IS TABLE OF element_type
  
INDEX BY index_type;
整数或字符
可以为负
无限制 不需要 不需要 只能用在PLSQL中
嵌套表 TYPE type_name IS TABLE OF element_type;

整型
只能为正
无限制 用同名构造函数赋值
其参数可以为空
必要 可以使用create type创建, 一直存在数据库中
变长数组 TYPE type_name IS VARRAY(n) OF element_type;

有限制

使用场景
  • 索引表: 通常第一选择是索引表,因为它不需要初始化或者extend且无个数限制操作,并且是迄今为止最高效的集合类型。
                唯一不足的一点是它只能用于PL/SQL而不能直接用于数据库。
                如果你需要允许使用负数索引,应该选择索引表;
  • 嵌套表: 如果你需要使用10g,11g中的那些集合操作,应该选择Nested table;
  • 变长数组: 如果需要限制集合元素的个数




1、索引表

TYPE type_name IS TABLE OF element_type INDEX BY index_type;  

table_name            type_name 


element_type:集合中的元素的类型。如number、char, 也可以是记录

index_type    :只能是整型或者字符串 pls_integer , binary_integer or char


示例表:

例1:
1
DECLARE
2
  TYPE INDEX_TAB_TYPE IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
3
  V_TABLE INDEX_TAB_TYPE;
4
  i PLS_INTEGER := 1;
5
BEGIN
6
    FOR idx IN -5 .. 5 LOOP
7
      V_TABLE(idx) := idx;
8
  END LOOP;
9
  dbms_output.put_line('共'|| v_table.count ||'个元素为');
10
  FOR idx IN v_table.first .. v_table.last LOOP
11
      dbms_output.put_line('第'|| i ||'个元素为'||v_table(idx));
<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值