如何在plsql中找到偶数的总和?

how to find sum of even digit in plsql?

declare
       n number(4);
       s number(4);
       i number(4);
     count number(4);

begin
       n:=&n;
       s:=0;
       count:=0;

       while (n>0 AND count MOD 2 = 0)
       loop
              i:= n mod 10;
              s:=s+i;
              n:=trunc(n / 10) ;  
              count:=count+1;  
       end loop;

       dbms_output.put_line('Sum of digit = ' || s);

end;

我试过了,但出现错误:

ERROR at line 12:
ORA-06550: line 12, column 23:
PLS-00204: function or pseudo-column 'COUNT' may be used inside a SQL statement
only
ORA-06550: line 12, column 8:
PL/SQL: Statement ignored

MOD is a function,不是运算符。尝试:

while (n > 0 AND MOD(count, 2) = 0)

您必须重命名 COUNT 变量,因为它是 Oracle 中的保留字。

但我不确定你的逻辑是否正确。

第一步 - cnt=0, mod(cnt , 2) = 0,你在你的循环中

第二步 - cnt=1, mod (cnt,2) = 1,您不会进入循环,while 将结束。也许你应该 IF MOD(cnt,2) = 0 THEN ....

我将 count 重命名为 cnt

count 应该是 "count" bcz 它是 中的保留字条件,而 是不正确的。如果在下面的示例中,n=150 结果将为零

declare
           n number(4);
           s number(4);
           i number(4);
           "count" number(4);


begin
       n:=150;
       s:=0;
       "count":=0;

       while (n>0)
       loop
              i:= n mod 10;
              s:=s+i;
              n:=trunc(n / 10) ;  
              if ("count" MOD 2 = 0)
              then             
                "count":="count"+1;  
              end if;  
       end loop;

       dbms_output.put_line('Sum of digit = ' || s);

end;