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

时间:2017-01-09 02:45:51

标签: oracle plsql while-loop sparse-matrix

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

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;
  

Informe de error - ORA-06502:PL / SQL:数字或值错误:NULL   索引表键值ORA-06512:在第48行   06502. 00000 - " PL / SQL:数字或值错误%s"   *原因:算术,数字,字符串,转换或约束错误              发生了。例如,如果尝试,则会发生此错误              将值NULL赋给声明为NOT NULL的变量,或者如果是              尝试将大于99的整数分配给变量              声明NUMBER(2)。   *操作:更改数据,如何操作或如何声明数据              这些值不会违反约束条件。

Kone Yapi Yapo Drogba Kone Dindane Toure Eboue

1 个答案:

答案 0 :(得分:4)

您的app.UseCookieAuthentication(new CookieAuthenticationOptions() { AutomaticAuthenticate = true, AutomaticChallenge = true, LoginPath = "/Account/Login" }); 循环条件不正确。

您需要检查WHILE是否为非NULL,而不是v_counter是非NULL。

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