我在经典ASP页面中使用ADO和VBScript运行数据库事务,该页面涉及对连接对象的Execute方法的多次调用(即 conn.Execute )。 我发现我需要在页面顶部设置'On Error Resume Next',以便当任何事务调用(即conn.Execute)失败时,我可以使用回滚代码来跟随它。 我是否可以运行ADO事务,即使错误模式为“On Error GoTo 0”而不是传统ASP页面中的“On Error Resume Next”?回滚事务的示例代码如下所示。
'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
答案 0 :(得分:3)
有趣的问题! 我通常不从经典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
%>