Я работаю над "классическим" приложением 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.
Как я могу игнорировать ошибки?