IF @@ERROR <> 0 GOTO ProcError
У меня есть приведенный выше код в SQL Server. Я не могу найти эквивалент оракула для @@Error.
Как этого добиться?
Ненулевое значение заполняется в @@Error, если в предыдущем операторе sql возникает ошибка.
При возникновении ошибки в PL/SQL генерируется исключение. Вам нужно добавить обработчик исключений





Похоже, вы пытаетесь выполнить обработку ошибок. В PL/SQL это обычно выглядит так:
BEGIN
...do something...
EXCEPTION WHEN NO_DATA_FOUND THEN -- check for a specific exception
DBMS_OUTPUT.put_line('No data found exception caught');
WHEN OTHERS THEN -- catch any exception
DBMS_OUTPUT.put_line('Unexpected error');
DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace);
RAISE; -- re-raise the exception after logging it
END;
Вы можете либо сделать это для всего вашего блока PL/SQL, с которым вы сейчас работаете (функция, процедура и т. д.), либо вы можете обернуть один оператор в анонимный блок PL/SQL с обработчиком исключений, если хотите больше функциональность TRY..CATCH.
Я согласен с предложением @Kfinity обработчика исключений для перехвата ошибки, вызванной оператором SQL (или оператором PL/SQL, если на то пошло).
Также может быть полезно знать, что прямой корреляцией @@Error в PL/SQL является SQLCODE. Если он не равен нулю (что происходит только при вызове из обработчика исключений), он дает вам код ошибки. Если 0, то....нет ошибки!
Что
@@Errorделает или возвращает?