Как игнорировать ошибки вложенных хранимых процедур в процедуре SQL Server 2000, вызываемой из ASP - PullRequest
0 голосов
/ 16 ноября 2010

Я работаю над "классическим" приложением ASP с базой данных SQL Server 2000.

У нас есть хранимая процедура (назовем ее SP0), которая вызывает другие хранимые процедуры (скажем, SP0.1, SP0.2 ...), которые сами вызывают другую хранимую процедуру с именем SPX.

Все эти процедуры генерируют ошибки, когда что-то идет не так, используя RAISERROR().

Мы хотим иметь возможность запустить SP0 с параметром @errorsInResultSet, который изменит свое поведение: вместо «повторного вызова» ошибок, как это происходит до сих пор, каждая подпроцедура будет регистрировать ошибки во временной таблице. #detectedProblems и верните его в конце.

Добавление ошибок во временную таблицу не является проблемой, но я не могу понять, как игнорировать ошибки, генерируемые вложенными хранимыми процедурами.

Я сделал это до сих пор:

EXEC @rc = [SP0.1] @errorsAsResultSet = @errorsAsResultSet  
    IF (0 <> @@ERROR) OR (0 <> @rc)
    BEGIN
        IF (@errorsAsResultSet <> 0x1)
        BEGIN
            RAISERROR('SP0.1: Error for table Tests in db %s.%s', 16, 1, @@SERVERNAME, @db)
        END
        GOTO FAILURE
    END

Это работает нормально, но все равно генерирует ошибки из самого низкого SPX, что препятствует выполнению ADO в классическом ASP.

Как я могу игнорировать ошибки?

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Если вы довольны тем, что ошибки регистрируются, и продолжение безопасно, вы можете использовать ON ERROR RESUME NEXT в строке перед вызовом SP. Это предотвратит появление ошибок на странице.

Чтобы снова включить ошибки на странице, вы можете использовать ON ERROR GOTO 0

0 голосов
/ 01 декабря 2010

В конце концов, похоже, что нет способа «спрятать» сообщения, сгенерированные операторами PRINT или RAISERROR в SP0.1, SP0.2, от вызывающей хранимой процедуры, что означаетвыполнение всегда интерпретируется как «ошибочное» ASP .

В конце я переписал новую хранимую процедуру со специальным параметром, чтобы настроить, как сообщать об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...