当前位置: 代码迷 >> DB2 >> db2一个功能不知道怎么实现
  详细解决方案

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

热度:2008   发布时间:2013-02-26 00:00:00.0
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;

------解决方案--------------------------------------------------------
捕获锁超时和死锁异常,定义循环次数,控制逻辑差不多
  相关解决方案