我在经典的 ASP 页面中使用 ADO 和 VBScript 运行数据库事务,这涉及对连接对象的 Execute 方法的多次调用(即 conn.Execute)。 我发现我需要在我的页面顶部设置“On Error Resume Next”,这样当任何事务调用(即 conn.Execute )失败时,我可以使用回滚代码跟随它。 即使我的经典 ASP 页面中的错误模式是“On Error GoTo 0”而不是“On Error Resume Next”,我也可以运行 ADO 事务吗? 回滚事务的示例代码如下。
'Rollback transaction if a previous conn.Execute fails
if err.Number <> 0 then
if tranCount = 1 then
conn.RollbackTran
tranCount = 0
end if
end if
最佳答案
有趣的问题! 我通常不从经典 ASP 执行数据库事务,所以我不确定 conn.Errors 是否会在 ASP 脚本之前捕获错误。但你至少可以尝试...
IF conn.Errors.Count > 0 THEN
response.write "whoops"
END IF
否则它可能会帮助您了解 On Error Resume Next 仅在当前范围内有效。 (见下面的代码)
<%
response.write "start"
BadFunction()
response.write "middle" '//<--- This will be printed
dim b : b = 8 / 0 '//Division by zero
response.write "end" '//<-- This will NOT be printed!
Function BadFunction()
On Error Resume Next
dim a : a = 9 / 0 '//Division by zero
BadFunction = a
End function
%>
关于asp-classic - 在经典 ASP 中运行 ADO 事务时使用什么错误模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865541/