读书人

db2一个功能不知道怎么实现

发布时间: 2012-03-29 12:53:12 作者: rapoo

db2一个功能不知道如何实现

我想实现一个功能,就是每次查询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;

[解决办法]
捕获锁超时和死锁异常,定义循环次数,控制逻辑差不多

读书人网 >IBM DB2

热点推荐