首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

PB调用存储过程有关问题

2013-03-14 
PB调用存储过程问题FOR ll_i 1 TO dw_dengjinfo.RowCount() . . .DECLARE Lis_td PROCEDURE FOR @return

PB调用存储过程问题
FOR ll_i = 1 TO dw_dengjinfo.RowCount()
 .
 .
 .
    DECLARE Lis_td PROCEDURE FOR @returnValue=sp_lisapp  
@applyno = :ls_checkbh, 
@pattype = '4',
@ifjz    = 0 ,  
@patno   = :ls_checkbh,
@patname = :ls_xm,
@patsex  = :ls_xb,  
@patbrith= :ldt_birthday,
@bedno   = '',
@docna   = '',
@depno   = '',
@dianose = '',
@testname= '',
@item   = :ls_item, 
@mode  = 0,
@applyid = :ls_retsqh OUTPUT using Tran_Inter;
     EXECUTE Lis_td;

    FETCH Lis_td Into :ll_ret,:ls_retsqh;
    IF Tran_Inter.SqlCode<>0 THEN
MessageBox(gs_messagetitle,Tran_Inter.SQLErrText + '~r~n' + ls_err)
    ELSE
    END IF
    CLOSE Lis_td ;
  .
  .
  .
NEXT

问题:我在循环体里面调用存储过程,当第循环一次执行存储过程时可以成功,但第二次以后就有错误提示了,错误信息为:cursor is not open,但第二次的存储过程执行后台已经成功

如何解决!!!

[解决办法]
你的游标Lis_td 没销毁
[解决办法]
哦,错了,我以为是SQL的游标,
改成这样试试
EXECUTE Lis_td;
IF Tran_Inter.SqlCode<>0 THEN
   MessageBox(gs_messagetitle,Tran_Inter.SQLErrText + '~r~n' + ls_err)
   //CLOSE Lis_td ;
   //conntine;
ELSE
    FETCH Lis_td Into :ll_ret,:ls_retsqh;
END IF
CLOSE Lis_td ;

[解决办法]
动态SQL
[解决办法]
CLOSE Lis_td ;
放在next後面。。。

热点排行
Bad Request.