pl / sql偶数和奇数和块

时间:2015-04-23 01:36:32

标签: sql oracle plsql

我有一个pl / sql编程问题:对于介于1..50之间的数字,你需要将偶数乘以5,奇数加3,然后找到结果中所有数字的总和。

所以到目前为止我有这个

DECLARE
ln_num NUMBER :=0;
ln_num1 NUMBER :=0;
ln_num2 NUMBER :=0;

BEGIN
    for i in 1..50 loop

        if mod(i,2) =0 then            
        ln_num:=i*5;

        elsif mod(i,2) = 1 then
        ln_num1:=i*3;

        ln_num2 := ln_num+ln_num1;
        dbms_output.put_line(ln_num2);

        end if;
    end loop;
END;

这给了我最后一个数字列表,但我需要所有数字的总和。我想知道我错过了什么,我该如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

  create or replace function odd_even_Numbers(num number)
  return varchar2 is

  value1 number;
  message varchar2(30);
  a number;
  begin
    a:=num;
    loop

      select  abs(REMAINDER(a, 2)) into value1 from dual;
      if (value1=1) then

        message:= 'odd number';
         dbms_output.put_line (a||'-----'||message);
       a:=a+1;

      else

        message:='even number';
        dbms_output.put_line (a||'-----'||message);
          a:=a+1;
      end if;      
      exit when a=20; 

      end loop;
       message:='done well';
      return message;
  end;

答案 1 :(得分:0)

SQL> DECLARE
  2  ln_num NUMBER :=0;
  3  ln_num1 NUMBER :=0;
  4  ln_num2 NUMBER :=0;
  5
  6  BEGIN
  7      for i in 1..50 loop
  8
  9          if mod(i,2) =0 then
 10          ln_num:=ln_num+i*5;  -- changes
 11
 12          elsif mod(i,2) = 1 then
 13          ln_num1:=ln_num1+i*3;  -- changes
 14
 15
 16          end if;
 17      end loop;
 18      ln_num2 := ln_num+ln_num1;
 19          dbms_output.put_line(' the result is ' || ln_num2);
 20
 21  END;
 22
 23
 24  /
the result is 5125

PL/SQL procedure successfully completed.