Asp classic 如何在从ASP.NET调用的SQL Server 2000过程中忽略嵌套存储过程中的错误

Asp classic 如何在从ASP.NET调用的SQL Server 2000过程中忽略嵌套存储过程中的错误,asp-classic,error-handling,sql-server-2000,Asp Classic,Error Handling,Sql Server 2000,我正在使用SQLServer2000数据库开发一个“经典”ASP应用程序 我们有一个调用其他存储过程(比如SP0.1、SP0.2…)的存储过程(我们称之为SP0),这些存储过程本身调用另一个名为SPX的存储过程 当使用RAISERROR()出现问题时,所有这些过程都会生成错误 我们希望能够使用参数@errorsInResultSet启动SP0,该参数将改变SP0的行为:每个子过程将在临时表#detectedProblems中记录错误,并在最后返回 向临时表中添加错误不是问题,但我不知道如何忽略嵌

我正在使用SQLServer2000数据库开发一个“经典”ASP应用程序

我们有一个调用其他存储过程(比如SP0.1、SP0.2…)的存储过程(我们称之为SP0),这些存储过程本身调用另一个名为SPX的存储过程

当使用
RAISERROR()
出现问题时,所有这些过程都会生成错误

我们希望能够使用参数
@errorsInResultSet
启动SP0,该参数将改变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
EXEC@rc=[SP0.1]@errorsAsResultSet=@errorsAsResultSet
如果(0@@ERROR)或(0@rc)
开始
IF(@errorsAsResultSet 0x1)
开始
RAISERROR('SP0.1:数据库%s.%s',16,1,@@SERVERNAME,@db中的表测试出错)
结束
转到失败
结束
这工作正常,但它仍然会从最低的SPX生成错误,这会阻止它在经典ASP中由ADO执行


如何忽略错误?

如果您很高兴记录了错误,并且可以安全地继续,则可以在SP调用之前的线路上使用“错误恢复下一步”。这将防止页面抛出错误


要在页面中稍后打开错误,可以使用
on ERROR GOTO 0

最终,似乎无法从调用存储过程中“隐藏”SP0.1、SP0.2中的
PRINT
RAISERROR
语句生成的消息,这意味着执行始终被解释为“错误”通过ASP


最后,我用一个特殊的参数重写了一个新的存储过程,以配置如何报告错误。

但我的问题更多地出现在SQL Server端。即使我忽略了ASP的错误,看起来我也无法访问SP生成的记录集。。。