【发布时间】:2011-05-10 20:31:24
【问题描述】:
我正在开发一个带有 SQL Server 2000 数据库的“经典”ASP 应用程序。
我们有一个存储过程(我们称之为 SP0),它调用其他存储过程(比如 SP0.1、SP0.2 ...),这些存储过程本身又调用另一个名为 SPX 的存储过程。
当使用RAISERROR() 出现问题时,所有这些过程都会产生错误。
我们希望能够使用参数@errorsInResultSet 启动 SP0,这将改变它的行为:而不是像目前那样“重新引发”错误,每个子过程都会将错误记录在临时表中#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 生成错误,这会阻止它在经典 ASP 中由 ADO 执行。
如何忽略错误?
【问题讨论】:
标签: asp-classic error-handling sql-server-2000