在传统ASP中运行ADO事务时使用什么错误模式?

时间:2012-03-26 01:18:19

标签: asp-classic transactions vbscript ado

我在经典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

1 个答案:

答案 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


%>