sql 事务
时间:2011-06-08 来源:胡立基
create proc proc_takeMoney
@cardID1 varchar(20), --汇款账号
@pwd int , --汇款密码
@takeMoney money, --汇款金额
@cardID2 varchar(20) --存款账号
as
set nocount on
declare @err int
set @err = 0
if exists(select 1 from cardInfo where cardID = @cardID1 and pass = @pwd)
begin
begin tran --事物开始
update cardInfo set balance = balance + @takeMoney where cardID = @cardID2 --接受款帐户加上@takeMoney
set @err = @err + @@error
update cardInfo set balance = balance - @takeMoney where cardID = @cardID1 --汇款帐户减去@takeMoney
set @err = @err + @@error
/*--交易信息表插入交易信息--*/
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID1,'支取',@takeMoney)
set @err = @err + @@error
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID2,'存入',@takeMoney)
set @err = @err + @@error
/*--交易信息--*/
select top 2 * from transInfo order by transDate desc
if(@err<>0)
begin
rollback tran --错误回滚事物
end
else
begin
commit tran --无错误提交事物
end
end --if结束
else
begin
print '密码错误'
end
CREATE PROC proc_AppFieldsManage
@CTRLIDFIELD VARCHAR(50),@DATATYPE VARCHAR(20),@ENCTRLIDLANGUAGE VARCHAR(10),@ENFIELDDESC VARCHAR(255),@ZHCNCTRLIDLANGUAGE VARCHAR(10),@ZHCNFIELDDESC VARCHAR(255),@ZHHKCTRLIDLANGUAGE VARCHAR(10),@ZHHKFIELDDESC VARCHAR(255)
AS
DECLARE @error int
BEGIN TRANSACTION
UPDATE App_FieldsDesc SET CtrlIDField=@CTRLIDFIELD,CtrlIDLanguage=@ENCTRLIDLANGUAGE,FieldDesc=@ENFIELDDESC WHERE CtrlIDField=@CTRLIDFIELD AND CtrlIDLanguage='EN-US'
SET @error=@error+@@ERROR
UPDATE App_FieldsDesc SET CtrlIDField=@CTRLIDFIELD,CtrlIDLanguage=@ZHCNCTRLIDLANGUAGE,FieldDesc=@ZHCNFIELDDESC WHERE CtrlIDField=@CTRLIDFIELD AND CtrlIDLanguage='ZH-CN'
SET @error=@error+@@ERROR
UPDATE App_FieldsDesc SET CtrlIDField=@CTRLIDFIELD,CtrlIDLanguage=@ZHHKCTRLIDLANGUAGE,FieldDesc=@ZHHKFIELDDESC WHERE CtrlIDField=@CTRLIDFIELD AND CtrlIDLanguage='ZH-HK'
SET @error=@error+@@ERROR
UPDATE App_Fields SET CtrlIDField= @CTRLIDFIELD,DataType=@DATATYPE WHERE CtrlIDField=@CTRLIDFIELD
SET @error=@error+@@ERROR
if(@error<>0)
begin
rollback tran
end
else
begin
commit tran
end
go