PB调用存储过程,有多个返回值时应该怎么取得返回的值(急)

老赵说高考 2007-01-07 07:23:19
//调用存储过程
string all_yingshou,all_LateFee, all_preincome,all_prepayout, all_shishou, all_pre

DECLARE pro1 PROCEDURE FOR dbo.pro_fee_report
@in_paystart=:tab_1.tabpage_1.em_1.text,
@in_payend=:tab_1.tabpage_1.em_2.text,
@in_uidstart=:uid_start,
@in_uidend=:uid_end,
@all_yingshou=:all_yingshou output,
@all_LateFee=:all_LateFee output,
@all_preincome=:all_preincome output,
@all_prepayout=:all_prepayout output,
@all_shishou=:all_shishou output,
@all_pre=:all_pre output;
execute pro1;
//messagebox('11',string(SQLca.sqlcode))
fetch pro1 into :all_yingshou,:all_LateFee,:all_preincome,:all_prepayout,:all_shishou,:all_pre;
close pro1;

测试的时候SQLca.sqlcode返回-1,请大家帮我看看应该怎么写????
...全文
965 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang3307 2011-08-24
  • 打赏
  • 举报
回复
可以把多个参数组成一个参数传出
myid_2008 2011-08-24
  • 打赏
  • 举报
回复
在存储过程中,最后返回多个参数值的时候,使用 select @var1,@var2,@var3...
the7thsense 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lzheng2001 的回复:]

CREATE PROCEDURE test @txt varchar(100) out
AS
set @txt= 'I Love You! '
go
-----------------
//PB代码
string ls_out
DECLARE myp1 procedure for test @txt=:ls_out ……
[/Quote]

收藏
lzheng2001 2007-01-11
  • 打赏
  • 举报
回复
CREATE PROCEDURE test @txt varchar(100) out
AS
set @txt='I Love You!'
go
-----------------
//PB代码
string ls_out
DECLARE myp1 procedure for test @txt=:ls_out output;
execute myp1;
fetch myp1 into :ls_out; //加上fetch
close myp1;
messagebox('test',ls_out)

在PB中要加上FETCH才能取到OUTPUT参数!当有SELECT 语句返回结果集时,OUTPUT参数是取不到的,除非把OUTPUT加入到SELECT中.

还要说明一下,这个例子只适用于PB直连的方法,用ODBC更是会返回错误

要获取OUTPUT参数或者Return值 可把procedure作為transaction的外部函數引用(local external function). 新建->standare class-> transation -> local external function -> 右键 -> paste special->sql -> remote sp
引用时,要先给PB变量定义大小,string ls_out space(10) 与 sp中output定义的长度一致

打开application -> 属性页中占击->additional properties->variable types->sqlca 下面填上这个uo的名字->ok

调用 li_return = sqlca.sp_name(...)
hnhhcj 2007-01-11
  • 打赏
  • 举报
回复
Fetch
老赵说高考 2007-01-08
  • 打赏
  • 举报
回复
不需要啦,我改用别的方法取得了结果过了,但是还是想知道 有多个输出参数 的存储怎么使用,哪位大侠给个示例啊,呵呵。
AFIC 2007-01-08
  • 打赏
  • 举报
回复
看看sqlca.sqlerrtext
li_d_s 2007-01-08
  • 打赏
  • 举报
回复
写declare麻烦,直接用个transaction对象的local external function简单方便
老赵说高考 2007-01-08
  • 打赏
  • 举报
回复
我测试过,存储过程没有问题,应该是我的写法问题。一个输出参数的存储过程,PB里调用都没有问题,就是多参数的不会,没写过
小潜s 2007-01-07
  • 打赏
  • 举报
回复
看看errortext

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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