运行pl / sql程序以查找前10个质数之和时出错

时间:2019-03-20 10:40:53

标签: plsql

DECLARE
    COUNT   NUMBER;
    prime   NUMBER;
    SUM     NUMBER;
    i       NUMBER;
    j       NUMBER;
BEGIN
    SUM := 2;
    COUNT := 0;
    prime := 1;
    i := 3;

    WHILE COUNT < 10
    LOOP
        j := i / 2;

        FOR k IN 2 .. j
        LOOP
            IF i MOD j = 0
            THEN
                prime := 0;
            END IF;

            IF prime = 1
            THEN
                SUM := SUM + i;
                COUNT := COUNT + 1;
            END IF;
        END LOOP;

        i := i + 1;
    END LOOP;

    DBMS_OUTPUT.put_line (SUM);
END;
/

我正在尝试计算前10个素数之和。我写了上面的代码,但是当我尝试执行它时,它抛出一个错误:

  

ORA-06550:第29行,第12列:
PLS-00103:遇到符号   预期以下情况之一时为“ +”:(此错误对应   到我要增加总和值的那一行。

1 个答案:

答案 0 :(得分:2)

COUNTSUM是保留关键字,不能选择为变量名。

添加前缀“ v”:

DECLARE
    vCOUNT   NUMBER;
    prime   NUMBER;
    vSUM     NUMBER;
    i       NUMBER;
    j       NUMBER;
BEGIN
    vSUM := 2;
    vCOUNT := 0;
    prime := 1;
    i := 3;

    WHILE vCOUNT < 10
    LOOP
        j := i / 2;

        FOR k IN 2 .. j
        LOOP
            IF i MOD j = 0
            THEN
                prime := 0;
            END IF;

            IF prime = 1
            THEN
                vSUM := vSUM + i;
                vCOUNT := vCOUNT + 1;
            END IF;
        END LOOP;

        i := i + 1;
    END LOOP;

    DBMS_OUTPUT.put_line (vSUM);
END;
/

这是一篇有关plsql中的命名约定的好文章: https://www.guru99.com/pl-sql-identifiers.html

错误消息“期望'('”表明您的数据库需要类似“ SUM(someValue)”的信息。 一个例子就是这样:

SELECT SUM(col1) FROM mytable