Для переменной цикла, имеющей нулевое значение

#oracle #plsql #plsqldeveloper

#Oracle #plsql #plsqldeveloper

Вопрос:

У меня есть объявление этой переменной

 counter INTEGER := 0;        /* loop counter */
 

И затем есть цикл for, подобный

 FOR counter IN 1 .. CEIL(records / batch)
LOOP
 

Как только точка выполнения приходит сюда, она вызывает execption.

 ORA-01086: savepoint 'SP1' never established in this session or is invalid
ORA-06512: at "MALI521.PRVSAPUPD", line 421
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 8
 

Теперь в цикле for установлена точка сохранения SP1. Код завершается сбоем в тот момент, когда он попадает в цикл for, поскольку переменная counter там имеет нулевое значение.

Есть идеи?

ПОЖАЛУЙСТА, УДАЛИТЕ ЕГО. Я ПОНЯЛ ЭТО.

Комментарии:

1. у x.509 этот вопрос не удален. Пожалуйста, опубликуйте свой собственный ответ. Я уверен, что другие найдут это полезным.

Ответ №1:

Вы уверены counter , что проблема? каковы значения records и batch

Комментарии:

1. Вы говорите, что это вызвано делением на ноль или чем-то еще? (Рассматриваю аналогичную проблему и наткнулся на этот вопрос, но на самом деле контента не так много.)

2. Это был один из вариантов. Моей другой мыслью было records или batch было установлено значение null, и все, что делится на null , вернется null .

3. Я столкнулся с той же проблемой. Да, если записи или пакет имеют значение null, это вызовет ошибку ORA-06512 в строке инструкции for .