如何在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;
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;