我写了以下代码:
DECLARE
n integer;
s integer;
d integer;
BEGIN
n:=&n;
while n!=0 loop
d:=mod(n,10);
s:=s+d;
n:=n/10;
end loop;
dbms_output.put_line('output :'||s);
end;
/
输入值:1234
输出值:4321 (完美我想要的)
但当我尝试跟随时(我发现错误的输出)
输入值:5678
输出:88761
预期产出:8765
答案 0 :(得分:1)
您提供的代码对我没有用,但错误是因为它正在围绕此操作:
n:=n/10;
如果你把它改成它应该有效:
n:=floor(n/10); OR n:=trunc(n/10);
然而,它不适合我,我需要在s:= s + d中添加一些东西。这是我的代码:
DECLARE
n INTEGER;
s INTEGER:= 0;
d INTEGER;
i INTEGER:= 0;
BEGIN
n:= 5678;
i:= length(to_char(n))-1;
WHILE n!=0 LOOP
d:=mod(n,10);
s:=s+(d*power(10,i));
i := i - 1;
n:= trunc(n/10);
END LOOP;
dbms_output.put_line('output :'||s);
END;
/
答案 1 :(得分:0)
您应该初始化s
和更多更改。
DECLARE
n INTEGER;
s integer := 0;
d integer;
BEGIN
n:=&n;
while n!=0 loop
d:=mod(n,10);
s:=(s*10)+d;
n:=floor(n/10);
end loop;
dbms_output.put_line('output :'||s);
END;
/