我想在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;
/
答案 0 :(得分:1)
鉴于第11行是
etoiles := etoiles || '*';
并且给出错误,您尝试构建的字符串似乎对于您声明的局部变量来说太长了。对于logiciel
表格中的每一行,您都需要在局部变量etoiles
中添加至少1个字符,并且可能更多地基于prix
列的值。在某些情况下,字符串对于您声明的变量来说太长了并不令人震惊。