失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > pb 调用mysql过程_pb调用mysql函数或存储过程异常

pb 调用mysql过程_pb调用mysql函数或存储过程异常

时间:2023-02-20 02:15:00

相关推荐

pb 调用mysql过程_pb调用mysql函数或存储过程异常

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函数或存储过程异常》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。