在pl/sql中打印奇数和偶数

在pl/sql中打印奇数和偶数,sql,oracle,plsql,Sql,Oracle,Plsql,我是编程新手;我想在循环中打印奇数和偶数,以解决if不起作用的问题,并且无论您输入的数字是什么,它都会打印else: DECLARE x NUMBER:=:x; r NUMBER:=:r; BEGIN LOOP if x/2=0 AND r/2!=0 then dbms_output.put_line('Even number x='||x); dbms_output.put_line('Odd number r='||r); x:= x+2; r:= r+2; else dbms_output

我是编程新手;我想在循环中打印奇数和偶数,以解决if不起作用的问题,并且无论您输入的数字是什么,它都会打印else:

DECLARE
x NUMBER:=:x;
r NUMBER:=:r;
BEGIN
LOOP
if x/2=0 AND r/2!=0 then
dbms_output.put_line('Even number x='||x);
dbms_output.put_line('Odd number r='||r);
x:= x+2;
r:= r+2;
else
dbms_output.put_line('Odd number x='||x);
dbms_output.put_line('Even number r='||r);
x:=x+2;
r:=r+2;
exit when x>20 and r>20;
end if;
end loop;
end;

您需要使用mod(x,2)=0来检查它是否为偶数,而不是x/2=0。我已经分离了x和r的条件。请查看以下代码:

    DECLARE
x NUMBER:=2;
r NUMBER:=3;
BEGIN
LOOP
if mod(x,2)=0 then
dbms_output.put_line('Even number x='||x);
else
dbms_output.put_line('Odd number x='||x);
end if;

if mod(r,2)=0 then
dbms_output.put_line('Even number r='||r);
else
dbms_output.put_line('Odd number r='||r);
end if;
x:= x+2;
r:= r+2;

exit when x>20 and r>20;

end loop;
end;

你好。看起来,与其想要简单除法的结果,不如想要除法的“余数”。为此,您需要模函数:
mod(x,2)
而不是
x/2
。您应该了解缩进可以大大提高代码的可读性!非常感谢@SteveLovell。我没有正确地检查代码。我的错误。再次感谢你通知我。。