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
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