我对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” *原因:存储过程'raise_application_error' 被调用,导致生成此错误。 *操作:按错误消息或联系中所述更正问题 应用程序管理员或DBA以获取更多信息。
答案 0 :(得分:0)
您遇到的问题与SQL * Plus(Oracle SQL客户端)有关,而不是编程语言PL / SQL。将SET SERVEROUTPUT ON
更改为
SET SERVEROUTPUT ON SIZE UNLIMITED
此错误可能,但是,表明您有一个无限循环,所以要小心。请注意,I
似乎永远不会递增,N
永远不会递减,因此从WHILE (I<N) LOOP
开始的循环可能不会终止。
祝你好运。
答案 1 :(得分:0)
I
和N
都没有更新过,所以你有一个无限循环。除此之外,错误表明正在超出DBMS_OUTPUT缓冲区。它的默认缓冲区大小为1,000,000字节,但您可以使用适当的DBMS_OUTPUT.ENABLE调用或SET SERVEROUTPUT SIZE语句进行调整。