在 plSQL 中生成帕斯卡三角形时出错



好吧,我是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以获取更多信息。

IN都没有更新,因此您有一个无限的循环。除此之外,错误表明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处启动可能不会终止。

最佳幸运。

最新更新