首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLSQL上的WHILE循环有什么问题?

PLSQL上的WHILE循环有什么问题?
EN

Stack Overflow用户
提问于 2017-01-09 02:45:50
回答 1查看 1.2K关注 0票数 4

我正在PL/SQL上练习集合,现在我编写了一个简单的WHILE循环,在屏幕上打印稀疏关联数组的值。我收到了以下错误: Oracle 06502: PL/SQL:数值或值错误: NULL索引表键值。结果打印在屏幕上,但甲骨文的错误以及。谢谢。

代码语言:javascript
复制
SET SERVEROUTPUT ON

DECLARE

  TYPE type_football_players IS TABLE OF VARCHAR2(45)
       INDEX BY PLS_INTEGER;

  v_costademarfil_2006 type_football_players;

  v_counter PLS_INTEGER;
BEGIN

  v_costademarfil_2006(9)  := 'Kone';
  v_costademarfil_2006(10) := 'Yapi Yapo';
  v_costademarfil_2006(11) := 'Drogba';
  v_costademarfil_2006(14) := 'Kone';
  v_costademarfil_2006(15) := 'Dindane';
  v_costademarfil_2006(19) := 'Toure';
  v_costademarfil_2006(21) := 'Eboue';

  v_counter := v_costademarfil_2006.FIRST;

  WHILE v_costademarfil_2006(v_counter) IS NOT NULL
  LOOP
        DBMS_OUTPUT.PUT_LINE(v_costademarfil_2006(v_counter));

        v_counter := v_costademarfil_2006.NEXT(v_counter);
  END LOOP;
END;

ORA-06502: PL/SQL:数值或值错误: NULL索引表键值ORA-06512:在第48行06502处。00000 - "PL/SQL:数值或值错误%s“*原因:出现算术、数字、字符串、转换或约束错误。例如,如果尝试将值NULL赋值给声明为NULL的变量,或者试图将大于99的整数赋值给声明的变量(2),则会发生此错误。*操作:更改数据,如何操作数据,或如何声明数据,使值不违反约束。

代码语言:javascript
复制
Kone Yapi Yapo Drogba Kone Dindane Toure Eboue
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 03:00:40

您的WHILE循环条件不正确。

您需要检查v_counter是否为非空,而不是v_costademarfil_2006(v_counter)是否为非空。

在循环的最后一次,v_counter为NULL,因此计算v_costademarfil_2006( NULL )。这将导致打印所有名称后的错误。

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

https://stackoverflow.com/questions/41540290

复制
相关文章

相似问题

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