获取sqlserver的存储过程的返回值

gong_max 2008-07-28 10:25:18
sqlserver的存储过程代码:
CREATE PROCEDURE xs_test
@input int,@err int output
AS
if @input < 0
SET @ERR = -1
else if @input = 0
set @err = 0
else
set @err = 1
GO


pb7 调用的代码:
integer li_err,li_test
li_test = -4
li_err =1
DECLARE xs_sql PROCEDURE FOR XS_test @input=:li_test,@err =:li_err OUTPUT;
EXECUTE xs_sql;
FETCH xs_sql INTO :li_err;
CLOSE xs_sql;
messagebox("",li_err2)


为什么返回的li_err的值是总是 0 呢,应该是-1 啊,大虾们帮我看看是什么问题
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlwei888 2008-07-28
  • 打赏
  • 举报
回复
看一下exe...和 fetch ... 的sqlca.sqlcode是多少
messagebox("",li_err) 放在fetch前,看看是多少!
orcd 2008-07-28
  • 打赏
  • 举报
回复
integer li_err,li_test
li_test = -4

DECLARE xs_sql PROCEDURE FOR XS_test @input=:li_test,@err =:li_err OUTPUT;
EXECUTE xs_sql;
FETCH xs_sql INTO :li_err;
CLOSE xs_sql;
messagebox("",li_err)
gong_max 2008-07-28
  • 打赏
  • 举报
回复
messagebox("",li_err)
弹出这个值也是0
jlwei888 2008-07-28
  • 打赏
  • 举报
回复
FETCH xs_sql INTO :li_err; //取得li_err
messagebox("",li_err2) //显示li_err2

sjlion 2008-07-28
  • 打赏
  • 举报
回复
基本上我的程序里的调用数据库的存储过程都是声明为local external function,然后再调用的。还没发现过错误,你可以试一试。
lllyyymmm 2008-07-28
  • 打赏
  • 举报
回复
integer li_err,li_test
li_test = -4

DECLARE xs_sql PROCEDURE FOR XS_test @input=:li_test,@err =:li_err OUTPUT;
EXECUTE xs_sql;
FETCH xs_sql INTO :li_err;
if sqlca.sqlcode <> 0 then
messagebox('fdf',sqlca.sqlerrtext)
end if
CLOSE xs_sql;
messagebox("",li_err)

1,076

社区成员

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

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