#oracle #plsql
#Oracle #plsql
Вопрос:
declare
sum number:=0;
count number:=0;
pnum number:=0;
temp number;
begin
for i in 1..25
loop
temp:=i;
count:=0;
for j in 1..25
loop
if mod(i,j)=0 then
count:=count 1;
end if;
end loop;
if count=2 then
sum:=sum temp;
pnum:=pnum 1;
end if;
exit when pnum=10;
end loop;
dbms_output.put_line(sum);
end;
Ошибка, обнаруженная на сервере Oracle:
ORA-06550: строка 21, столбец 17: PLS-00103: Столкнулся с символом » » при ожидании одного из следующих:
(
ORA-06512: в «SYS.WWV_DBMS_SQL_APEX_180200», строка 548 ORA-06550: строка 28, столбец 25: PLS-00103: Встречается символ «)» при ожидании одного из следующих:
(
Ответ №1:
Вы используете зарезервированные слова SUM
и COUNT
; если вы отредактируете имя ваших переменных, ваш код будет работать:
DECLARE
vSUM NUMBER := 0;
vCOUNT NUMBER := 0;
pnum NUMBER := 0;
temp NUMBER;
BEGIN
FOR i IN 1 .. 25
LOOP
temp := i;
vCOUNT := 0;
FOR j IN 1 .. 25
LOOP
IF MOD(i, j) = 0
THEN
vCOUNT := vCOUNT 1;
END IF;
END LOOP;
IF vCOUNT = 2
THEN
vSUM := vSUM temp;
pnum := pnum 1;
END IF;
EXIT WHEN pnum = 10;
END LOOP;
DBMS_OUTPUT.put_line(vSUM);
END;