当前位置: 代码迷 >> PB >> PB调用存储过程之后, 出异常信息.
  详细解决方案

PB调用存储过程之后, 出异常信息.

热度:130   发布时间:2016-04-29 09:41:07.0
PB调用存储过程之后, 出错误信息...
"Procedure has not been executed or has no results"

具体情况是,在一个cb_00n中调用了一个函数,而在函数中调用了一个存储过程,用于统计/汇总部分历史数据.

执行完成之后,偶尔在切换到别的数据控件焦点时,即出现错误. 显示了上面的错误信息.?

这类错误如何避免? 应该注意什么?

/*
SQL code
DECLARE aproc_genNewPtfromorg PROCEDURE FOR ap_genNewPtfromorg ( :ldt_Max, :ldt_mid, :ls_yesNo );     SetPointer(HourGlass!)    Open(w_schedule_bar)        ldt_Now = DateTime(Today(), Time(String(Now(), 'hh') + ':00:00.000' ))    ldt_mid = ldt_Now    If IsNull(ldt_Max) Then         ldt_Max = DateTime(Date('2005-12-25'),Time('00:00:00.000'))        w_schedule_bar.uf_schedule_move(50)        EXECUTE aproc_genNewPtfromorg ;        If SQLCA.sqlcode = 0 Or SQLCA.sqlcode = 100 Then            Commit ;        ElseIf SQLCA.sqlcode = -1 Then            // Issue an error message since it failed.            MessageBox("Stored Procedure Error!", SQLCA.sqlerrtext)            RollBack ;        End If        Close aproc_genNewPtfromorg ;    ElseIf ldt_Now > ldt_Max Then         ll_Hours = DaysAfter(Date(ldt_Max), Date(ldt_Now)) * 24 + (SecondsAfter(Time(ldt_Max), Time(ldt_Now)) / 3600)        For ll_i = 1 To ll_Hours            w_schedule_bar.uf_schedule_move(100 * ll_i / ll_Hours)            If Hour(Time(ldt_Max)) >= 23 Then                // 23点以后,加一个小时日期也要加一天。                ldt_mid = DateTime(RelativeDate(Date(ldt_Max), 1), RelativeTime(Time(ldt_Max), 3600))            Else                ldt_mid = DateTime(Date(ldt_Max), RelativeTime(Time(ldt_Max), 3600) )            End If            EXECUTE aproc_genNewPtfromorg ;            If SQLCA.sqlcode = 0 Or SQLCA.sqlcode = 100 Then                Commit ;            ElseIf SQLCA.sqlcode = -1 Then                // Issue an error message since it failed.                MessageBox("Stored Procedure Error!", SQLCA.sqlerrtext)                RollBack ;            End If            ldt_Max = ldt_mid        Next        If ll_Hours > 1 Then                Close aproc_genNewPtfromorg ;        End If    End If        Close(w_schedule_bar)    SetPointer(Arrow!)

 */

------解决方案--------------------
执行完成之后,偶尔在切换到别的数据控件焦点时,即出现错误. 


偶尔?

就是有时报错?有时不报错?没有规律?

把窗口重新regenerate.
------解决方案--------------------
为什么在SQLCODE = 100 的时候还COMMIT 呢,不明白
  相关解决方案