Sql Server 使用while 循环数据


  
declare @workId int = 0;
declare @userId int = 123;
 
if @userId <=0
begin 
    Print 'User name error';
    return;
end

declare @table_BookId table (BookId int);

select @workId as workId;

insert into @table_BookId  select BookId from Books  

select BookId,Code,BookTitle,BookDate,CreateTime from Books 
where BookId in (select * from @table_BookId);

begin transaction --开启事务
    
	declare @BookId int = 0;
	declare @actionHistoryId int =0;

    while exists(select BookId from @table_BookId) --是否存在数据,存在则进入循环
	begin 
	    select top 1 @BookId = BookId from @table_BookId --获取首条数据Id

		Update BookParties set State=1,userId = @userId
		where BookId = @BookId  

		set @actionHistoryId =0;

		INSERT INTO [dbo].[Action] 
				   ([BookId]
				   ,[Action]
				   ,[ActionPartyId]
				   ,[ActionParty]
				   ,[ActionById]
				   ,[ActionBy]
				   ,[ActionTimestamp]
				   ,[ActionType])
			 VALUES
				   (@BookId
				   ,'Response'
				   ,@workId
				   ,@workgroupName
				   ,@userId
				   ,@responseUserName
				   ,GETDATE()
				   ,0)
	    select @actionHistoryId = @@identity;

		INSERT INTO [dbo].[ActionDetails]  ([UpdatedValue] ,[actionHistoryId] ,[FieldName])
			 VALUES ('ABC' ,@actionHistoryId, @workgroupName);
 

	    delete from @table_BookId where BookId = @BookId; --操作完后,删除该Id,避免一直循环
	end
commit transaction --提交事务

select 'Executed successfully' as 'Operation Tips'
Print 'complete the operation';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值