Pl / SQL中的数字总和(提取数字时出错)

时间:2014-03-28 07:26:48

标签: sql oracle plsql

我写了以下代码:

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

2 个答案:

答案 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;
/