可否在sql语句执行超时错误时,让程序自动重复尝试执行该语句(不是sql语句本身的语法错误)
目前正在进行一个批次处理:
dim rsSql As New ADODB.Recordset
dim strSql as String
......
......
while not rsSql.EOF
strSql="Update ..."
cnAdo.Execute strSql
rsSql.Movenext
wend
......
......
由于工作环境中数据库访问比较频繁,所以有时会出现cnAdo.Execute strSql这条语句执行超时错误,或者有实时错误(不是sql语句本身的语法错误),所以是否有办法当这条语句执行出错时,程序不会中断或跳出,而是仍不断尝试执行该语句,直到执行成功。
这点真的让我十分困惑,总不能批次作业总是执行到一半就报错吧,拜托各位啦!
问题点数:100、回复次数:6Top
1 楼danielinbiti(金)回复于 2005-01-01 23:12:41 得分 10
on error resume next '试试吧,不然得改一下循环体,重复尝试链接
dim rsSql As New ADODB.Recordset
dim strSql as String
......
......
while not rsSql.EOF
strSql="Update ..."
cnAdo.Execute strSql
rsSql.Movenext
wendTop
2 楼shohoku_11(Azure)回复于 2005-01-02 00:11:10 得分 0
on error resume next 不是就要执行下一条语句了吗?可能是没有说清楚,一旦rsSql.Movenext,那么strSql的内容也就变了呀Top
3 楼cindytsai(笨笨的蔡鸟)回复于 2005-01-02 11:46:16 得分 20
要不就把“on error resume next ”改成“on error goto 语句标号 ”,当发生错误是,使程序转跳到语句标号所指示的程序块中处理。Top
4 楼danielinbiti(金)回复于 2005-01-02 16:45:34 得分 30
dim TryFlag as boolean
while not rsSql.EOF
TryFlag=true
while (TryFlag)
on error goto errhandle
strSql="Update ..."
cnAdo.Execute strSql
tryflag=false
errhandle:
wend
rsSql.Movenext
wend
Top
5 楼CBean(C豆)回复于 2005-01-02 17:00:21 得分 40
dim rsSql As New ADODB.Recordset
dim strSql as String
dim nMaxLoop as integer
......
......
on error goto PROC_ERR
while not rsSql.EOF
strSql="Update ..."
cnAdo.Execute strSql
rsSql.Movenext
wend
......
......
PROC_ERR:
If Err then
Err.Clear
nMaxLoop=nMaxLoop+1
if nMaxLoop>1000 then '最多尝试一千次
Exit sub
end if
Resume
end ifTop
6 楼shohoku_11(Azure)回复于 2005-01-02 20:24:59 得分 0
好像考虑越来越完善了,谢谢各位啦!Top




