我正在尝试编写一个检查数字是否为二进制的代码。 这是我的代码。
declare
n INTEGER:=#
ch number:=0;
begin
loop
exit when n=0;
if(mod(n,10)!=0 or mod(n,10)!=1) then
ch:=1;
exit;
end if;
n:=n/10;
end loop;
if ch=1 then
dbms_output.put_line('Not a Binary number.');
else
dbms_output.put_line('Binary!!!');
end if;
end;
/
我正在使用Oracle 11g SQL Plus。 有时它会在第2行给出错误。这是错误的片段。
old 2: n INTEGER:=#
new 2: n INTEGER:=;
n INTEGER:=;
*
ERROR at line 2:
ORA-06550: line 2, column 12:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
( - + case mod new not null <an identifier>
如果它正确运行,那么对于每个数字,它都会提供与'Not a Binary number.'
相同的输出。
答案 0 :(得分:1)
在IF语句中更改OR的AND。它似乎做你想要的。
DECLARE
n INTEGER := #
ch NUMBER := 0;
BEGIN
LOOP
EXIT WHEN n = 0;
IF MOD(n, 10) != 0
AND MOD(n, 10) != 1
THEN
ch := 1;
EXIT;
END IF;
n := n / 10;
END LOOP;
IF ch = 1
THEN
dbms_output.put_line('Not a Binary number.');
ELSE
dbms_output.put_line('Binary!!!');
END IF;
END;
/