PB应当怎样判断调用的存储过程是否成功呢

PB应该怎样判断调用的存储过程是否成功呢
PB应该怎样判断调用的存储过程是否成功呢?

declare aaa procedure for pro_aaa ;
execute pro_aaa ;
if sqlca.sqlcode <> 0  then
   gf_xftclog(as_fwy.fwy,af_getdate(),'费用生成失败'+sqlca.sqlerrtext)
   return false
end if

1.以上书写是否正确?
2.sqlcode<>0表示什么呢?  是调用失败?还是存储过程中SQL执行失败?
3.如果以上书写正确,那么为什么sqlerrtext是空的呢
4.如果以上书写错误,那么应该怎样写呢?

请大家帮忙!
------解决方案--------------------
declare aaa procedure for pro_aaa ;
execute pro_aaa ;
if sqlca.sqlcode <> 0 then
  gf_xftclog(as_fwy.fwy,af_getdate(),'费用生成失败'+sqlca.sqlerrtext)
  return false
end if

1.以上书写是否正确? 
2.sqlcode<>0表示什么呢? 是调用失败?还是存储过程中SQL执行失败?
3.如果以上书写正确,那么为什么sqlerrtext是空的呢
4.如果以上书写错误,那么应该怎样写呢?
--------------
1,正确不正确需要编译看了
2,是调用 即过程执行是否成功
3,sqlerrtext是不是空,和COMMIT、ROLLBACK有关,也和错误代码有关
4,个人认为过程不该这么写,过程内部同样应该定义返回值,通过返回值确定成功与否
如:create or replace procedure jfgz( prm_sjgz in number,
                                  prm_zglb in varchar2,
                                  prm_gzqynd in varchar2,
                                  prm_retncode out number, 
                                  prm_retntxt  out varchar2)
5,其他同仁补充.
------解决方案--------------------
CREATE procedure [dbo].[yourprocname]
( @sError    varchar(255) output)
as

insert into ...


if @@error <> 0
   begin
    rollback
    select @sError = '插入...时错误'
    raiserror(@sError,16,1)
    return -1
   end

end

----------------

PB里面调用

----------------
DECLARE yourname PROCEDURE FOR yourprocname

@serror = :ls_err output;

EXECUTE yourname ;


if isnull(ls_err) or trim(ls_err) = '' then 
COMMIT;
else
rollback;
messagebox('',ls_err)
return
end if

------解决方案--------------------
PB中调用存储过程完整编程2008-04-27 16:36PB中调用存储过程完整编程 
String   ls_Proc
Long   ll_Count,ll_flag
String   ls_Id
String   ls_return
ls_Proc = 'USP_PROC'
SELECT Count(*) INTO :ll_count from sysobjects where name = :ls_Proc and xtype = 'P';
If ll_Count <= 0 Then
   messagebox("错误",'错误信息:存储过程' + ls_Proc + '不存在!')
   Return -1