今天存储过程被卡

本文介绍了一个用于更新公告板中工作ID阅读记录的存储过程。该过程通过检查工作ID是否已存在于特定公告的阅读记录中来避免重复计数,并在未发现重复的情况下更新记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE PROCEDURE sp_UpdateBulletinByWorkId
                      
@WorkId varchar(6),
                      
@Id int,
                      
@retFlag int out
 
AS

Declare @PointerPrev int
Declare @PointerCurr int
Declare @WorkReader varchar(100)
Declare @temp varchar(10)
Set @PointerPrev=1
Set @PointerCurr=1

BEGIN TRANSACTION
Set NoCount ON

if  exists (select @WorkReader=WorkIdReader  from Bulletin where Id=@Id)
    
begin
        
                         
        
Set @PointerCurr=CharIndex(',',@WorkReader,@PointerPrev+1)
        
set @temp=cast(SUBSTRING(@WorkReader,@PointerPrev,@PointerCurr-@PointerPrevas varchar)
                    
if @temp=@WorkId
                    
begin  
                    
set @retFlag=0
                     
return
                    
end
                

        
SET @PointerPrev = @PointerCurr

        
while (@PointerPrev+1 < LEN(@WorkReader))
                    
Begin
                    
Set @PointerCurr=CharIndex(',',@WorkReader,@PointerPrev+1)
                    
if(@PointerCurr>0)
                    
Begin
                    
set @temp=cast(SUBSTRING(@WorkReader,@PointerPrev+1,@PointerCurr-@PointerPrev-1as varchar)

                    
if @temp=@WorkId
                    
begin  
                    
set @retFlag=0
                     
return
                    
end

                    
End
                        
end
                    
set @temp=cast(SUBSTRING(@WorkReader,@PointerPrev+1,LEN(@WorkReader)-@PointerPrevas varchar)

                    
if @temp=@WorkId
                    
begin
                    
set @retFlag=0
                    
return
                    
end

                    
                    
    
end


 
update Bulletin set WorkIdReader=WorkIdReader+','+@WorkId
 
select  *   from Bulletin where Id=@Id

Set NoCount OFF
    
begin
    
set @retFlag=1
    
return
    
end

IF @@error = 0
BEGIN
    
COMMIT TRANSACTION
           
END

ELSE
BEGIN
    
ROLLBACK TRANSACTION
          
END
GO
 17行出错,问题没有解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值