首先感谢zjcxc的回复!我再详细介绍一下我的应用的情况:
界面用VC,与SQL相连用dblib;在SQL端,修改、增加、删除数据均采用自己编写的SP,并且SP返回处理的结果,根据返回的结果,应用程序给出相应的提示信息。
以下就是我的一个SP:CREATE procedure mysp_dj
@CurGkxm char(10),
@CurFjh char(10),
@CurJqhm char(11),
@CurJqfs int,
@CurSTime char(20),
@CurETime char(20),
@CurYajin money,
@CurRzdj char(10)asdeclare @CurError int
declare @Cnt intif (@CurJqfs=3 or @CurJqfs=5)
begin
select @Cnt=count(*) from lt_bgjf where jqhm=@CurJqhm and jsbz_a=0
if @Cnt>0
begin
/*第一种出错的情况*/
select -1
return
end
endbegin transaction
select @Cnt=count(*) from lt_auth where nbr=@CurJqhm
if @Cnt>0
begin
update lt_auth ......
end
else
begin
insert into lt_auth ......
endselect @CurError=@@Error
if @CurError<>0
begin
/*第二种出错的情况,回滚事务*/
rollback transaction
select -2
return
endinsert into lt_bgjf ......select @CurError=@@Error
if @CurError<>0
begin
/*第三种出错的情况,回滚事务*/
rollback transaction
select -3
return
endcommit transaction/*没有错误发生,返回0*/
select 0
return上面这个存储过程在查询分析器中单独执行都没有问题!难道是我的界面程序有问题?
界面用VC,与SQL相连用dblib;在SQL端,修改、增加、删除数据均采用自己编写的SP,并且SP返回处理的结果,根据返回的结果,应用程序给出相应的提示信息。
以下就是我的一个SP:CREATE procedure mysp_dj
@CurGkxm char(10),
@CurFjh char(10),
@CurJqhm char(11),
@CurJqfs int,
@CurSTime char(20),
@CurETime char(20),
@CurYajin money,
@CurRzdj char(10)asdeclare @CurError int
declare @Cnt intif (@CurJqfs=3 or @CurJqfs=5)
begin
select @Cnt=count(*) from lt_bgjf where jqhm=@CurJqhm and jsbz_a=0
if @Cnt>0
begin
/*第一种出错的情况*/
select -1
return
end
endbegin transaction
select @Cnt=count(*) from lt_auth where nbr=@CurJqhm
if @Cnt>0
begin
update lt_auth ......
end
else
begin
insert into lt_auth ......
endselect @CurError=@@Error
if @CurError<>0
begin
/*第二种出错的情况,回滚事务*/
rollback transaction
select -2
return
endinsert into lt_bgjf ......select @CurError=@@Error
if @CurError<>0
begin
/*第三种出错的情况,回滚事务*/
rollback transaction
select -3
return
endcommit transaction/*没有错误发生,返回0*/
select 0
return上面这个存储过程在查询分析器中单独执行都没有问题!难道是我的界面程序有问题?
估计与dblib与关.
SQL Server 6.x SQL Server 2000
DB-Library 的两阶段提交特殊库管理跨两个或多个服务器分布的事务。 不再支持 DB-Library 两阶段提交。使用 Microsoft 分布式事务处理协调器 (MS DTC) 完成两个服务器上的同时更新。删除所有对 DB-Library 两阶段提交的引用。
DB-Library 应用程序可在 Microsoft® Visual Basic® 中开发。 不再支持 DB-Library for Visual Basic 的开发库。现有的 DB-Library for Visual Basic 应用程序的将对 SQL Server 2000 运行,但是必须使用 SQL Server 6.5 的开发库对其进行维护。所有用于访问 SQL Server 的新编写的 Visual Basic 应用程序应使用 Visual Basic 数据 API,例如,ActiveX 数据对象 (ADO) 和远程数据对象 (RDO)。
我只有使用另外的数据库访问了!