PL/SQL 集合 -- 嵌套表

-- Start

嵌套表(Nested Tables) 其实就是一个没有最大容量的数组。

DECLARE
  -- 定义一个嵌套表类型 MY_ROW,元素类型是 VARCHAR2
  TYPE MY_ROW IS TABLE OF VARCHAR2(15);
  
  -- 定义一个类型为 MY_ROW 的嵌套表变量 test1, 此时 test1 是 NULL  
  test1 MY_ROW; 
  
  -- 定义一个类型为 MY_ROW 的嵌套表变量 test2, 此时 test2 是一个空数组  
  test2 MY_ROW := MY_ROW(); 

  -- 定义一个类型为 MY_ROW 的嵌套表变量 test3, 此时 test3 是一个有5个元素的数组 
  test3 MY_ROW := MY_ROW('Column 1', 'Column 2', 'Column 3', 'Column 4', 'Column 5');

BEGIN
  test3.EXTEND();     -- 添加 1 个 NULL 元素到末尾  
  test3.EXTEND(3);    -- 添加 3 个 NULL 元素到末尾  
  test3.EXTEND(3, 1); -- 复制元素1的值, 添加 3 个到末尾  
    
  DBMS_OUTPUT.PUT_LINE('数组开始元素的索引: ' || test3.FIRST());  
  DBMS_OUTPUT.PUT_LINE('数组末尾元素的索引: ' || test3.LAST());  
  DBMS_OUTPUT.PUT_LINE('数组元素的数量: ' || test3.COUNT()); 
  DBMS_OUTPUT.PUT_LINE('数组元素的数量: ' || CARDINALITY(test3));
  DBMS_OUTPUT.PUT_LINE('数组的容量: ' || test3.LIMIT());  
    
  DBMS_OUTPUT.PUT_LINE('元素 3 的上一个元素是: ' || test3(test3.PRIOR(3)));  
  DBMS_OUTPUT.PUT_LINE('元素 3 的下一个元素是: ' || test3(test3.NEXT(3)));   
    
  IF test3.EXISTS(3) THEN  
    DBMS_OUTPUT.PUT_LINE('存在第 3 个元素');  
  END IF;  
    
  -- 迭代数组,可变数组从 1 开始  
  FOR i IN test3.FIRST()..test3.LAST() LOOP  
    DB
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值