Oracle PL/SQL:数字或值错误

Oracle PL/SQL:数字或值错误,oracle,plsql,Oracle,Plsql,我的问题是,在一个循环中,我得到了使用数字的数字或值错误。im用于LR_UPDATE_行的测试数据当前由2个元素组成。两者都是数字类型。LR_UPDATE_行的类型本身是PL/SQL表类型,它由一个数字(3,0)列组成 代码如下: DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.FIRST); /* Prints out 1 */ DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.LAST); /* Prints

我的问题是,在一个循环中,我得到了使用数字的数字或值错误。im用于LR_UPDATE_行的测试数据当前由2个元素组成。两者都是数字类型。LR_UPDATE_行的类型本身是PL/SQL表类型,它由一个数字(3,0)列组成

代码如下:

        DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.FIRST); /* Prints out 1 */
        DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.LAST);  /* Prints out 2 */
        a := LR_UPDATED_ROWS.FIRST; /* Assignment works */
        b := LR_UPDATED_ROWS.LAST;  /* Assignment works */
        DBMS_OUTPUT.PUT_LINE(a);  /* Prints out 1 */
        DBMS_OUTPUT.PUT_LINE(b);  /* Prints out 2 */

        IF LR_UPDATED_ROWS IS NOT NULL THEN
            IF LR_UPDATED_ROWS.FIRST = 1 AND LR_UPDATED_ROWS.LAST = 1 THEN
              lv_rows_lst:=lv_rows_lst||','||LR_UPDATED_ROWS(1);
            ELSE
              FOR I IN LR_UPDATED_ROWS.FIRST..LR_UPDATED_ROWS.LAST
              LOOP
                lv_rows_lst:=lv_rows_lst||','||LR_UPDATED_ROWS(I);
              END LOOP;
            END IF;

            lv_rows_lst:=SUBSTR(lv_rows_lst,2,LENGTH(lv_rows_lst));
            OPEN LS_CUR FOR 'SELECT * FROM DOCUMENT_QUEUE DQ WHERE DQ.ENV_ID IN ('||lv_rows_lst||')';
        ELSE
            LS_CUR := LS_CUR;    
        END IF;
行:“对于LR_更新的_行中的I。首先..LR_更新的_行。最后”给出错误:“PL/SQL:数值或值错误”。
我在网上的研究表明,这是一种转换或数字大小不兼容的错误。不幸的是,我一直无法理解这种错误

感谢所有的帮助和提示

    Try this.

    DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.FIRST);
    /* Prints out 1 */
    DBMS_OUTPUT.PUT_LINE(LR_UPDATED_ROWS.LAST);
    /* Prints out 2 */
    a := LR_UPDATED_ROWS.FIRST;
    /* Assignment works */
    b := LR_UPDATED_ROWS.LAST;
    /* Assignment works */
    DBMS_OUTPUT.PUT_LINE(a);
    /* Prints out 1 */
    DBMS_OUTPUT.PUT_LINE(b);
    /* Prints out 2 */
    IF LR_UPDATED_ROWS.EXISTS(1) THEN
/* Still not getting the use of this piece of code */
      IF LR_UPDATED_ROWS.FIRST = 1 AND LR_UPDATED_ROWS.LAST = 1 THEN
        lv_rows_lst           :='SELECT COLUMN_VALUE FROM TABLE(LR_UPDATED_ROWS)';
      ELSE
        FOR I IN LR_UPDATED_ROWS.FIRST..LR_UPDATED_ROWS.LAST
        LOOP
          lv_rows_lst:=lv_rows_lst||','||LR_UPDATED_ROWS(I);
        END LOOP;
      END IF;
      lv_rows_lst:=SUBSTR(lv_rows_lst,2,LENGTH(lv_rows_lst));
      OPEN LS_CUR FOR 'SELECT * FROM DOCUMENT_QUEUE DQ WHERE DQ.ENV_ID IN ('||lv_rows_lst||')';
    ELSE
      LS_CUR := LS_CUR;
    END IF;