好吧,我是PLSQL的新手,我似乎无法弄清楚我在尝试生成Pascal的三角形时遇到的一些错误
这是代码:
SET SERVEROUTPUT ON;
DECLARE
N NUMBER;
I NUMBER;
J NUMBER;
K NUMBER;
L NUMBER;
T NUMBER;
S NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('ENTER THE LIMIT');
N:=&N;
I:=0;
T:=N-2;
S:=0;
L:=0;
WHILE (I<N) LOOP
J:=0;
WHILE (J<T) LOOP
DBMS_OUTPUT.PUT(' ');
J:=J+1;
END LOOP;
K:=0;
WHILE (K<=S) LOOP
IF (K<=I) THEN
DBMS_OUTPUT.PUT(K+1);
L:=K;
ELSE
L:=L-1;
DBMS_OUTPUT.PUT(L+1);
END IF;
K:=K+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
T:=T-1;
S:=S+2;
END LOOP;
END;
错误是
错误报告 - ORA-20000:ORU-10027:缓冲区溢出,限制1000000字节ORA-06512:在" sys.dbms_output",第32行ORA-06512:在" sys.dbms_output",第97行ORA-06512:在第29行20000. 00000-"%s"*原因:存储过程'rish_application_error' 被称为导致此错误生成的。*操作:纠正错误消息或联系中所述的问题 应用程序管理员或DBA以获取更多信息。
I
和N
都没有更新,因此您有一个无限的循环。除此之外,错误表明DBMS_OUTPUT缓冲区已超过。默认的缓冲区大小为1,000,000字节,尽管您可以使用适当的DBMS_OUTPUT进行调整。
与Oracle SQL客户端SQL*Plus有关的问题,而不是PL/SQL,即编程语言。更改将SET SERVEROUTPUT ON
的行更改为
SET SERVEROUTPUT ON SIZE UNLIMITED
此错误 May ,但是,表明您有一个无限的循环,所以要小心。请注意,I
似乎永远不会递增,并且N
永远不会减少,因此循环在WHILE (I<N) LOOP
处启动可能不会终止。
最佳幸运。