Я не знаю, почему вы получаете сообщение ORA-06512 без других сообщений об ошибках над ним.Вы уверены, что вставили все сообщение об ошибке?
ORA-06512 используется только при распечатке трассировки стека, когда в коде PL / SQL возникает исключение.Вот полный пример:
ERROR at line 1:
ORA-01001: invalid cursor
ORA-06512: at "USER.SOME_PROCEDURE", line 5
ORA-06512: at line 1
Настоящая ошибка здесь - ORA-01001.ORA-06512 просто указывает, где произошла ошибка: в строке 5 USER.SOME_PROCEDURE
, которая была вызвана строкой 1 анонимного блока PL / SQL.
Взглянув на ваш код, я могу определитьпара проблем:
При использовании FOR ... IN some_cursor LOOP ...
не следует явно открывать и закрывать курсор.Это будет сделано для вас автоматически с помощью цикла FOR
.
Также не следует пытаться закрыть курсор, который не был открыт.Если вы попытаетесь это сделать, вы получите сообщение об ошибке «Недопустимый курсор» ORA-01001.Я предполагаю, что вы вставили это, чтобы убедиться, что курсор был закрыт до того, как вы его открыли, но, к сожалению, вы не можете этого сделать.операторов OPEN
и CLOSE
из вашей процедуры и повторите попытку.