#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 .