2010-11-28 10 views
1

私はPLSQLでコードを書いています。 どこが必要なのですか数字の桁数の合計=が数値であるかどうかを確認します。数字の桁の合計=数値そのものを確認する

私はアルゴリズムを遵守しようとしましたが、まだいくつかのエラーがあります。助けてください。 私はPLSQLを初めて使用しています。私のコードが続き

set serveroutput on; 



Declare 

    I number(4); 
    Sum number(4):=0; 
    C number(15):=10; 

Begin 
    for I in 1..999 
    loop 

    --  dbms_output.put_line(I); 



     Sum:=power(mod(I,C),3); 

     while mod(I,C) 
     loop 

      Sum:=power(mod(mod(I,C),C),3); 


      C:=C*10; 

     end loop;  


     if Sum=I then 

      dbms_output.put_line(I);   

     end if; 

    end loop; 

End; 

/
+0

データベースで可能ですか?素晴らしい。 – Yehonatan

+0

@イエナナタン - はい: – Pavitar

+0

私は再びそれを言うでしょう - 素晴らしい! – Yehonatan

答えて

3

sumは、変数名としてそれを使用すべきではない、PLSQLで重要な言葉です。ここで

はあなたの問題の解決策です:

SET serveroutput ON format wraped; 
DECLARE 
    i INTEGER := 153; 
    j INTEGER; 
    summ INTEGER := 0; 
BEGIN 
    j  := i; 
    WHILE i > 0 
    LOOP 
    summ := summ + MOD(i,10) ** 3; 
    i := FLOOR (i/10); 
    END LOOP; 
    IF summ = j THEN 
    dbms_output.put_line('Sum of cubes of digits is EQUAL to the number'); 
    ELSE 
    dbms_output.put_line('Sum of cubes of digits is NOT EQUAL to the number'); 
    END IF; 
END; 

ソリューションは、NUMBER(38)である任意の整数、私のために動作します。