在 plSQL 中生成帕斯卡三角形时出错
Error While generating pascal's triangle in plSQL
嗯,我是 plSQL 的新手,我似乎无法弄清楚在尝试生成帕斯卡三角形时遇到的一些错误
代码如下:
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 以获取更多信息。
您遇到的问题与 SQL*Plus,即 Oracle SQL 客户端,而不是 PL/SQL,编程语言有关。将 SET SERVEROUTPUT ON
行更改为
SET SERVEROUTPUT ON SIZE UNLIMITED
不过,此错误可能表明您遇到了无限循环,因此请小心。请注意 I
似乎永远不会递增并且 N
永远不会递减,因此从 WHILE (I<N) LOOP
开始的循环可能不会终止。
祝你好运。
I
和 N
都没有更新,所以你有一个无限循环。除此之外,错误表明 DBMS_OUTPUT 缓冲区已被超出。它的默认缓冲区大小为 1,000,000 字节,但您可以通过适当的 DBMS_OUTPUT.ENABLE 调用或 SET SERVEROUTPUT SIZE 语句进行调整。
嗯,我是 plSQL 的新手,我似乎无法弄清楚在尝试生成帕斯卡三角形时遇到的一些错误
代码如下:
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 以获取更多信息。
您遇到的问题与 SQL*Plus,即 Oracle SQL 客户端,而不是 PL/SQL,编程语言有关。将 SET SERVEROUTPUT ON
行更改为
SET SERVEROUTPUT ON SIZE UNLIMITED
不过,此错误可能表明您遇到了无限循环,因此请小心。请注意 I
似乎永远不会递增并且 N
永远不会递减,因此从 WHILE (I<N) LOOP
开始的循环可能不会终止。
祝你好运。
I
和 N
都没有更新,所以你有一个无限循环。除此之外,错误表明 DBMS_OUTPUT 缓冲区已被超出。它的默认缓冲区大小为 1,000,000 字节,但您可以通过适当的 DBMS_OUTPUT.ENABLE 调用或 SET SERVEROUTPUT SIZE 语句进行调整。