50高分求助PB调用SQL Server存储过程的问题,急!!!!

zhutougg 2003-09-07 07:48:01
存储过程如下:

use ERP
go
if exists (select name from sysobjects
where name='bp_search' and type='p')
drop procedure bp_search
go

use ERP
go
create procedure bp_search @cancel_warrant varchar(10),@bb_storage_serial varchar(10) output
as
select @bb_storage_serial=min(ab_storage_serial)
from business_position
where business_warrant_serial=@cancel_warrant
and cancel_sign='N'

go

这个存储过程我在SQLServer中运行过已没问题,在PB中调用如下:

declare bp_search_use procedure for bp_search
@cancel_warrant=:cancel_warrant,@bb_storage_serial=:bb_storage_serial output
using sqlca;
execute bp_search_use;
if sqlca.sqlcode <> 0 then
messagebox("错误","错误信息:"+ sqlca.SQLErrText)
return
end if
fetch bp_search_use into :bb_storage_serial;
close bp_search_use;

可以确定:cancel_warrant变量已经赋值,要在调用存储过程之后获得变量:bb_storage_serial,但每次调用的时候都出现如下出错对话筐:

Space must be allocated for bind parameter

偶不知道这是怎么回事,这个问题困扰偶快要两个星期了,可是还是没能搞定,程序也因此搁在那了,现在是又急又烦,哪位大大好心帮帮忙,分数尽给,感激不尽。
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyanzhen 2003-10-09
  • 打赏
  • 举报
回复
解决了吗?我也碰到PB8.0.3用ODBC调用最简单的SQL2000存储过程也出现同样的问题
SQLSTATE = 22005

[Microsoft][ODBC SQL Server Driver]Invalid vharacter value for cast specification
而用sql2000的native driver却没问题,真不知道是怎么回事?
zhutougg 2003-09-22
  • 打赏
  • 举报
回复
老大我已经发到你邮箱里了,麻烦你了
guangli_zhang 2003-09-16
  • 打赏
  • 举报
回复
总是报 SQLSTATE = 22005

[Microsoft][ODBC SQL Server Driver]Invalid vharacter value for cast specification
这样的错误,不知为什么
FeelingL 2003-09-16
  • 打赏
  • 举报
回复
作如下修改,试试
select @bb_storage_serial=isnull(min(ab_storage_serial),'')
from business_position
where business_warrant_serial=@cancel_warrant
and cancel_sign='N'
guangli_zhang 2003-09-16
  • 打赏
  • 举报
回复
我用存储过程也是没有成功,建议在存储过程中将你要得到的值存到一个表中,执行存储过程后,再读出
当然如果存储过程能直接取出,还是用存储过程。
我用的是PB9
wellexpert 2003-09-16
  • 打赏
  • 举报
回复
搞啦半天,还是。。。。唉!中国软件的悲哀,有兴趣的话,发消息到我的邮箱我单独告诉你
well_expert@tom.com
zhutougg 2003-09-13
  • 打赏
  • 举报
回复
还是不行啊,兄弟,好惨哪
liujiaqiang 2003-09-11
  • 打赏
  • 举报
回复
declare bp_search_use procedure for bp_search
@cancel_warrant=:cancel_warrant,@bb_storage_serial=:bb_storage_serial output
using sqlca;
sqlca.autocommit = true ///////
execute bp_search_use;
if sqlca.sqlcode <> 0 then
messagebox("错误","错误信息:"+ sqlca.SQLErrText)
return
end if
fetch bp_search_use into :bb_storage_serial;
close bp_search_use;
sqlca.autocommit = false ///////

不知道行不行,从你的错误信息来看是说你的参数没传入。
zhutougg 2003-09-11
  • 打赏
  • 举报
回复
楼上的兄弟,还是不行啊,哪位大大可以帮忙解决这个问题啊?搞定的话给40分,其他有帮助的兄弟10分,谢谢了
btlxy 2003-09-10
  • 打赏
  • 举报
回复
作如下修改:
declare bp_search_use procedure for bp_search
@cancel_warrant=:cancel_warrant,@bb_storage_serial=:bb_storage_serial output
using sqlca;
execute bp_search_use;


if sqlca.sqlcode <> 0 then
messagebox("错误","错误信息:"+ sqlca.SQLErrText)
return
end if
fetch bp_search_use into :bb_storage_serial;
close bp_search_use;
commit;////提交

eastpond 2003-09-08
  • 打赏
  • 举报
回复
gz
andyzq 2003-09-08
  • 打赏
  • 举报
回复
我在我的机器上模拟了你的环境,没有问题。

你执行存储过程之前有没有为变量cancel_warrant赋值,检查一下
hzl2003 2003-09-08
  • 打赏
  • 举报
回复
up
runsoft 2003-09-08
  • 打赏
  • 举报
回复
zhutougg (猪头光) ,你那取值也有问题,PROCEDURE是个过程,所以,必须使用循环去取数据才能得到正确结果。
hzhxxx 2003-09-08
  • 打赏
  • 举报
回复
看帮助

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧