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

在使用PB调用MySQL存储过程时遇到错误,特别是当存储过程带有传入传出参数时,会提示SQLSTATE=37000错误。尽管PB可以正常连接和操作MySQL表,但在调用函数或存储过程时失败。已创建名为sp_GetMaxNumber的存储过程,尝试在PB中通过LOCAL External Functions声明并调用,但仍然出现语法错误。问题可能涉及PB的RPC调用方式或MySQL的语法兼容性。直接在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的函数或存储过程出问题。帮忙看下是何问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值