integer msg
string sql
msg=messagebox('问题','确实要运算月销售报表数据吗',question!,yesno!,2)
if msg = 2 then return
cb_2.enabled=false
sle_1.text='正在运算,请不要关闭窗口...'
sql = 'sp_sales_report'
execute immediate :sql using sqlca;
IF SQLCA.SQLCode<>0 THEN
Beep(1)
sle_1.text=SQLCA.SQLerrText
return
ELSE
sle_1.text='恭喜!恭喜!运算完全成功!'
cb_2.enabled=true
END IF
return
以上是PB中的一个按钮,调用sql = 'sp_sales_report'这个存储过程。
在最后,系统也提示了sle_1.text='恭喜!恭喜!运算完全成功!'
问题:但是在数据库的进程中,该存储过程还在执行,并为堵塞状态,为什么?
我也有做return,哪里有问题?
存储过程单独执行没有任何问题。
PB
------解决方案--------------------
改为以下代码试试
msg=messagebox('问题','确实要运算月销售报表数据吗',question!,yesno!,2)
if msg = 2 then return
cb_2.enabled=false
sle_1.text='正在运算,请不要关闭窗口...'
sql = 'sp_sales_report'
execute immediate :sql using sqlca;
IF SQLCA.SQLCode<>0 THEN
rollback;
Beep(1)
sle_1.text=SQLCA.SQLerrText
return
ELSE
commit using sqlca;
sle_1.text='恭喜!恭喜!运算完全成功!'
cb_2.enabled=true
END IF
return