sql存储过程循环实现事务

//往一张表中添加数据,获取添加数据生成的ID,再往另一张表中添加多条数据

ALTER PROCEDURE [dbo].[AttendanceCardAndDetail_Add]
 @SchoolID int,
 @AC_Count int,
 @OutTime datetime,
 @OutState smallint,
 @StartCardNumber bigint,
 @EndCardNumber bigint,
 @Remark text
AS
BEGIN
 begin tran
 declare @acid bigint;
 insert into AttendanceCard(SchoolID,AC_Count,OutTime,OutState,StartCardNumber,EndCardNumber,Remark)values
 (@SchoolID,@AC_Count,@OutTime,@OutState,@StartCardNumber,@EndCardNumber,@Remark);
 set @acid=@@IDENTITY;//全局变量
 while @AC_Count>0//相当于循环的次数
  begin
   insert into AttendanceCardDetail(AC_ID,SchoolID,CardNumber,State,DistributionState,Remark)values
   (@acid,@SchoolID,@StartCardNumber+@AC_Count-1,0,0,@Remark)
   set @AC_Count=@AC_Count-1;
  end
  if @@ERROR<>0
  begin commit rollback
  return 0
  end
  else
  begin commit tran
  return 1
 end
END

转载于:https://www.cnblogs.com/apes-monkeys/p/4031187.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值