游标定义如下:    /*用户表组*/       
    DECLARE cur_yhbz CURSOR       
    FOR select bzh,bzbl,zbbz,jlfs,xlbh,xscs,byqbh,jfbz from jf_dybz        
        where hh=@hh and yf=@yf order by bzh       
           
   /*本月表底度*/        
DECLARE cur_bydd CURSOR       
    FOR select blx,xb,zfb,zfx,isnull(cjdd,0),isnull(zbdl,0),cjdl,ycdm,bzbl,cbrq       
        from bdd        
    where hh=@hh and jfyf=@yf and xh=@xh and bzh=@bzh 
    FOR UPDATE OF cjdl,ycdm     
    /*上月表底度*/        
    DECLARE cur_sydd CURSOR       
    FOR select blx,xb,zfb,zfx,isnull(cjdd,0),isnull(zbdl,0),cjdl,ycdm,bzbl,cbrq       
        from bdd        
        where hh=@hh and jfyf=@sjyf and xh=@sjxh and bzh=@bzh 
 
在cur_yhbz打开同时打开cur_bydd时用到如下语句时出错!
          update bdd set ycdm=null,cjdl=null where current of cur_bydd      
如能帮我解决可以再另外加分的。谢谢!

解决方案 »

  1.   

    你的游标有没有指明是哪一条记录?
    比如说:有无用到fetch ...语句,如果没有指明的话当染就不能update了
      

  2.   

    你把光标定义语句改成以下语句试试,具体的区别看联机丛书:*用户表组*/ 
    DECLARE cur_yhbz INSENSITIVE CURSOR 
    FOR select bzh,bzbl,zbbz,jlfs,xlbh,xscs,byqbh,jfbz from jf_dybz 
    where hh=@hh and yf=@yf order by bzh /*本月表底度*/ 
    DECLARE cur_bydd INSENSITIVE CURSOR 
    FOR select blx,xb,zfb,zfx,isnull(cjdd,0),isnull(zbdl,0),cjdl,ycdm,bzbl,cbrq 
    from bdd 
    where hh=@hh and jfyf=@yf and xh=@xh and bzh=@bzh 
    FOR UPDATE OF cjdl,ycdm 
    /*上月表底度*/ 
    DECLARE cur_sydd INSENSITIVE CURSOR 
    FOR select blx,xb,zfb,zfx,isnull(cjdd,0),isnull(zbdl,0),cjdl,ycdm,bzbl,cbrq 
    from bdd 
    where hh=@hh and jfyf=@sjyf and xh=@sjxh and bzh=@bzh