PL / SQL:循环中的Concat字符串

时间:2014-03-23 17:31:26

标签: sql oracle plsql

我想在SQL * Plus中执行CURSOR,但是我收到此错误消息:

  

ORA-06502:PL / SQL:数字或值错误:字符串缓冲区也是如此   小ORA-06512:第11行

这是我的PL / SQL脚本:

DECLARE
    CURSOR cr IS SELECT * FROM LOGICIEL;
    unLog LOGICIEL%ROWTYPE;
    nbrEtoiles NUMBER;
    etoiles LOGICIEL.ETOILES%TYPE;
BEGIN
    OPEN cr;
    FETCH cr INTO unLog;
    WHILE cr%FOUND LOOP
        LOOP
            etoiles := etoiles || '*';
            nbrEtoiles := nbrEtoiles + 1;
            EXIT WHEN nbrEtoiles >= (unLog.PRIX/100);
        END LOOP;
        DBMS_OUTPUT.PUT_LINE('Nombre Etoiles: ' || etoiles);
        --UPDATE LOGICIEL SET ETOILES = etoiles;
        nbrEtoiles := 0;
        FETCH cr INTO unLog;
    END LOOP;
    CLOSE cr;
END;
/

1 个答案:

答案 0 :(得分:1)

鉴于第11行是

etoiles := etoiles || '*';

并且给出错误,您尝试构建的字符串似乎对于您声明的局部变量来说太长了。对于logiciel表格中的每一行,您都需要在局部变量etoiles中添加至少1个字符,并且可能更多地基于prix列的值。在某些情况下,字符串对于您声明的变量来说太长了并不令人震惊。