Вы не можете получить доступ к флагу переполнения от C/C++.
я не соглашаюсь с этим. Вы могли записать, что некоторые встраивают asm и используют jo
(переполнение перехода), инструкция, принимающая Вас, находится на x86 для захвата переполнения. Конечно, Вы, больше кодируете не было бы портативным к другой архитектуре.
взгляд info as
и info gcc
.
Это потому, что серьезность RAISERROR недостаточно высока, она должна быть от 11 до 19, как описано здесь
например
RAISERROR ('Errors found, please fix these errors and retry', 16, 2) WITH SETERROR
I think you need to raise an error with a severity level higher than 10 for it to be caught, e.g.
RAISERROR ('Errors found', 11, 2) WITH SETERROR
Из MSDN
severity
Определенный пользователем уровень серьезности, связанный с этим сообщением. Уровни серьезности от 0 до 18 могут использоваться любым пользователем. Уровни серьезности от 19 до 25 используются только членами фиксированной серверной роли sysadmin. Для уровней серьезности от 19 до 25 требуется опция WITH LOG.
Внимание Уровни серьезности от 20 до 25 считаются фатальными. При обнаружении фатального уровня серьезности клиентское соединение разрывается после получения сообщения, а ошибка регистрируется в журнале ошибок и журнале приложения.
Попробуйте вместо этого:
RAISERROR ('Errors found, please fix these errors and retry', 1, 2) WITH SETERROR
RETURN