PL SQL输出错误

时间:2014-02-08 19:25:53

标签: oracle plsql

我正在尝试编写一个检查数字是否为二进制的代码。 这是我的代码。

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.'相同的输出。

1 个答案:

答案 0 :(得分:1)

在IF语句中更改OR的AND。它似乎做你想要的。

DECLARE
  n  INTEGER := &num;
  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;
/