delete lis.ldoccupation where OccupationCode in ('08380');
UPDATE lis.ldoccupation SET  GrpLifeRisk= 'z', GrpSuddRisk= 'z',GrpDiseaRisk='z',GrpHosipRisk='z' WHERE OccupationCode = '08380';
delete lis.ldoccupation where OccupationCode in ('09210');
UPDATE lis.ldoccupation SET  GrpLifeRisk= 'z', GrpSuddRisk= 'z',GrpDiseaRisk='z',GrpHosipRisk='z' WHERE OccupationCode = '09210';以上代码,为什么第一条可以成功执行,以下的执行完,影响行数为‘0’ 呢?

解决方案 »

  1.   

    delete lis.ldoccupation where OccupationCode in ('08380'); --可以执行
    UPDATE lis.ldoccupation SET GrpLifeRisk= 'z', GrpSuddRisk= 'z',GrpDiseaRisk='z',GrpHosipRisk='z' WHERE OccupationCode = '08380'; -- 到这因为已经删除了,所以影响为0
    delete lis.ldoccupation where OccupationCode in ('09210'); -- 这个也影响为0,说明符合条件的记录不存在。
    UPDATE lis.ldoccupation SET GrpLifeRisk= 'z', GrpSuddRisk= 'z',GrpDiseaRisk='z',GrpHosipRisk='z' WHERE OccupationCode = '09210'; --上个都不存在,后面更不存在了。
      

  2.   

    sql%rowcount输出的是最近的一条dml语句影响的行数,前面都把记录删除了,最后面再update的时候,肯定是0了。