Asp classic 在经典ASP中运行ADO事务时使用什么错误模式?
我在一个经典的ASP页面中使用ADO和VBScript运行一个数据库事务,该页面涉及多个调用来执行连接对象的方法(即conn.Execute)。 我发现我需要在页面顶部设置“On Error Resume Next”(错误恢复下一步),以便在任何事务调用(即conn.Execute)失败时,我可以使用回滚代码跟踪它。 我可以运行ADO事务吗?即使在我的经典ASP页面中,错误模式为“出错时转到0”而不是“出错时继续下一步”时也是如此?回滚事务的示例代码如下所示Asp classic 在经典ASP中运行ADO事务时使用什么错误模式?,asp-classic,transactions,vbscript,ado,Asp Classic,Transactions,Vbscript,Ado,我在一个经典的ASP页面中使用ADO和VBScript运行一个数据库事务,该页面涉及多个调用来执行连接对象的方法(即conn.Execute)。 我发现我需要在页面顶部设置“On Error Resume Next”(错误恢复下一步),以便在任何事务调用(即conn.Execute)失败时,我可以使用回滚代码跟踪它。 我可以运行ADO事务吗?即使在我的经典ASP页面中,错误模式为“出错时转到0”而不是“出错时继续下一步”时也是如此?回滚事务的示例代码如下所示 'Rollback transact
'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,则
如果tranCount=1,则
控制回滚传输
tranCount=0
如果结束
如果结束
有趣的问题!
我通常不从经典ASP执行数据库事务,因此我不确定conn.Errors是否会在ASP脚本之前捕获错误。但你至少可以试试
IF conn.Errors.Count > 0 THEN
response.write "whoops"
END IF
否则,它可能会帮助您了解“出错时恢复下一步”仅在当前范围内有效。(见下面的代码)
<%
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
%>