在 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 开始的循环可能不会终止。

祝你好运。

IN 都没有更新,所以你有一个无限循环。除此之外,错误表明 DBMS_OUTPUT 缓冲区已被超出。它的默认缓冲区大小为 1,000,000 字节,但您可以通过适当的 DBMS_OUTPUT.ENABLE 调用或 SET SERVEROUTPUT SIZE 语句进行调整。