0
Я пытаюсь написать код, который проверяет, является ли число двоичным или нет. Вот мой код.PL SQL неправильный вывод
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.'
.
'мод (п, 10) = 0 или мод (п, 10) = 1' всегда ИСТИНА –
Вы можете переписать вашу программу гораздо проще:' если REGEXP_LIKE (to_char (п), «^ [01] + $ ') then' –
@EgorSkriptunoff Не могли бы вы объяснить '^ [01] + $' part? – Maverick