我想实现一个功能,就是每次查询A表的时候,如果A表资源忙的话,就重新查一次,总共查10次,如果超过10次,还没有查到的话,就直接返回。我知道oracle里怎么写,但是db2里不知道该如何写,麻烦大家指点。下面是oracle的实现代码
nTryCnt := 1;
WHILE nTryCnt <= 10
LOOP
BEGIN
nReTryFlg := 0;
SELECT
DQBH
,ZXBH
,ZDBH
INTO
nNewBH
,nMinNum
,nMaxNum
FROM
A
WHERE
SYSQF = insTYQF
FOR UPDATE NOWAIT
;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ROLLBACK;
RETURN NULL;
WHEN OTHERS THEN
IF SQLCODE = -54 THEN
nReTryFlg := 1;
ELSE
ROLLBACK;
RETURN NULL;
END IF;
END;
IF nReTryFlg = 0 THEN
EXIT;
END IF;
nTryCnt := nTryCnt + 1;
END LOOP;
------解决方案--------------------------------------------------------
捕获锁超时和死锁异常,定义循环次数,控制逻辑差不多