首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-06532:下标超出限制

ORA-06532:下标超出限制
EN

Stack Overflow用户
提问于 2014-06-28 05:24:42
回答 2查看 49.6K关注 0票数 10

请帮助我理解为什么第二块是抛错误,但第一个块是running.Both的位置,限制是小于大小声明(41)。

代码语言:javascript
运行
复制
Declare
  Type typ_int_array IS VARRAY(41) OF NUMBER;
  v_typ_int_array typ_int_array := typ_int_array(10,20,30,40);
BEGIN
  SYS.DBMS_OUTPUT.PUT_LINE(v_typ_int_array(1));
  v_typ_int_array.extend(6);
  v_typ_int_array(6) := 60;
END;

代码语言:javascript
运行
复制
Declare
  Type typ_int_array IS VARRAY(41) OF NUMBER;
  v_typ_int_array typ_int_array := typ_int_array(10,20,30,40);
BEGIN
  SYS.DBMS_OUTPUT.PUT_LINE(v_typ_int_array(1));
  v_typ_int_array.extend(38);
  v_typ_int_array(38) := 60;    
END;

异常:

代码语言:javascript
运行
复制
**Error :**
Error report -
ORA-06532: Subscript outside of limit
ORA-06512: at line 6
06532. 00000 -  "Subscript outside of limit"
*Cause:    A subscript was greater than the limit of a varray
           or non-positive for a varray or nested table.
*Action:   Check the program logic and increase the varray limit
           if necessary.
10
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-28 05:28:59

extend的参数是要添加到数组中的项数,而不是最终大小。

当你把三十八加到原来的四,你得到四十二,这肯定大于41。嗯,那是我上学的时候,但我敢肯定,如果他们颁布了,我肯定会听到这样的变化:-)

第一种方法有效,因为加6到4只会给你10,在41的限制下。

票数 13
EN

Stack Overflow用户

发布于 2021-08-31 04:31:04

您已经声明varray大小为41,那么您已经启动了4个值,然后扩展了38,这意味着已经有了主动值(4) +扩展值(38) =42,这就是原因所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24463919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档