CREATEPROCEDURE sp_UpdateBulletinByWorkId @WorkIdvarchar(6), @Idint, @retFlagint out AS Declare@PointerPrevint Declare@PointerCurrint Declare@WorkReadervarchar(100) Declare@tempvarchar(10) Set@PointerPrev=1 Set@PointerCurr=1 BEGINTRANSACTION Set NoCount ON ifexists (select@WorkReader=WorkIdReader from Bulletin where Id=@Id) begin Set@PointerCurr=CharIndex(',',@WorkReader,@PointerPrev+1) set@temp=cast(SUBSTRING(@WorkReader,@PointerPrev,@PointerCurr-@PointerPrev) asvarchar) 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-1) asvarchar) if@temp=@WorkId begin set@retFlag=0 return end End end set@temp=cast(SUBSTRING(@WorkReader,@PointerPrev+1,LEN(@WorkReader)-@PointerPrev) asvarchar) 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 COMMITTRANSACTION END ELSE BEGIN ROLLBACKTRANSACTION END GO