pb调用mysql函数或存储过程异常。尤其是mysql函数带传入传出参数时,pb调用时候无法正常执行,提示SQLSTATE=37000错误。
在pb程序中正常更新mysql表中字段或读取mysql表中字段均无问题。pb连接mysql也没问题。只是调用mysql数据库函数或存储过程时候,无法正常执行。
--**************************************************************************************************************************************
具体代码:
是这样的,mysql里面正常新建存储过程sp_GetMaxNumber。
create procedure sp_GetMaxNumber (in v_bmh varchar(6), out v_MaxNo int)
begin
start transaction;
Update t_BillNo
Set SaleNo = ifnull(SaleNo,0)+1
Where bmh = v_bmh;
if @@error_count = 0 then
begin
Select Saleno into v_MaxNo From t_BillNo Where bmh = v_bmh;
Commit;
end;
else
begin
rollback;
set v_MaxNo = 0;
end;
end if;
end
......SQL代码......
PB中在LOCAL External Functions 中这样申明
Function int sp_GetMaxNumber(String bmh, Ref Int MaxNo) RPCFUNC ALIAS FOR "sp_GetMaxNumber"
在PB W_MAIN窗体的CB_1.CLICK事件中:
string ls_bmh, ls_errtext
int li_maxno
ls_bmh = '0901'
sp_GetMaxNumber(ls_bmh, li_maxno)
ls_errtext = sqca.sqlerrtext
messagebox('Error',string(li_maxno)+' ' +sqlca.sqlerrtext)
但PB显示显示错误:
0 SQLSTATE = 37000
[MYSQL] [ODBC 5.1 DRIVER]YOU HAVE AN ERROR IN YOUR SQL SYNTAX;CHECK THE MANUAL THAT CORRESPONDS TO YOUR MYSQL SERVER VERSION FOR THE RIGHT SYNTAX TO USE NEAR '?=CALL SP_GetMaxNumber(0,_GBK'0901') AT LINE 1.
--***********************************************************************************************************************************
我试过直接在mysql数据库里面call存储过程是可以的。pb调用直接传参数也不行,把声明写到程序里面调用也不行。pb连接mysql是没有任何问题的,正常的更新表是没有问题的,就是调用mysql的函数或存储过程出问题。帮忙看下是何问题。
如果觉得《pb 调用mysql过程_pb调用mysql函数或存储过程异常》对你有帮助,请点赞、收藏,并留下你的观点哦!