这样试试:SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GOALTER procedure ABCD @fld1 char(100), @fld2 char(300) as--每一过程拥有一唯一区界号,过程内的异常编号在此基础上增加 declare @errcode integer set @errcode=11000 declare @return integer /*返回结果的初始化*/ set @return=0--启动事务处理 declare @tran_point int --控制事务嵌套 set @tran_point=@@trancount --保存事务点 if @tran_point=0 begin tran tran_ABCD else save tran tran_ABCDupdate .... if @@error <> 0 begin set @return=2 goto err_lab end insert into ....if @@error <> 0 begin set @return=3 goto err_lab end ----------事务处理 if @tran_point=0 commit tran tran_ABCD goto return_laberr_lab: if @return<100 set @return=@errcode +@return rollback tran tran_ABCDreturn_lab: return @returnGO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
GO
SET ANSI_NULLS ON
GOALTER procedure ABCD
@fld1 char(100),
@fld2 char(300)
as--每一过程拥有一唯一区界号,过程内的异常编号在此基础上增加
declare @errcode integer
set @errcode=11000
declare @return integer /*返回结果的初始化*/
set @return=0--启动事务处理
declare @tran_point int --控制事务嵌套
set @tran_point=@@trancount --保存事务点
if @tran_point=0
begin tran tran_ABCD
else
save tran tran_ABCDupdate .... if @@error <> 0
begin
set @return=2
goto err_lab
end insert into ....if @@error <> 0
begin
set @return=3
goto err_lab
end ----------事务处理
if @tran_point=0
commit tran tran_ABCD
goto return_laberr_lab:
if @return<100 set @return=@errcode +@return
rollback tran tran_ABCDreturn_lab:
return @returnGO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO