SQL存储过程实现,关注与取消关注功能

Create proc Attention
 @id int,--用户ID
 @uid varchar(2000),--需要操作的用户ID
 @type int--操作类型   1:取消关注    2:关注
as 
    begin 
    declare  @data varchar(2000),--数据源
             @split varchar(2),--分割符
             @val varchar(2000),--储存最终需要修改的字符串
             @t varchar(2000),--存放已经添加过的数据
             @txt varchar(2000),--存储一个临时字符串
             @num varchar(2)--代码控制,第一次执行不需要截取顿号右边的值,不然会报错
    set @split='、'--分割符
    set @num='0'
    select @data=Name from StudentInfoes where StudentId=@id--数据源   如1、2、3、4
    if @type=1--取消关注
    begin
      while(charindex(@split,@data)<>0)
        begin 
          set @t=CONCAT(@val,substring(@data,1,charindex(@split,@data)-1))--取字符串
          set @txt=CHARINDEX('、',@t)
          if @num!='0' and @txt!='0' --判断是否为第一次加载,判断顿号右边是否有数据。否则会报错
            begin
                set @txt=reverse(substring(reverse(@t),1,charindex('、',reverse(@t)) - 1)) --取特殊符号右边的字符串
            end
          set @num='1'
          if (@t!=@uid and @txt is null) or (@t!=@uid and @txt!=@uid)
            begin
              set @val=CONCAT(@t,'、')--组装最终数据
            end
          set @data = stuff(@data,1,charindex(@split,@data),'') --将取出来的字符串删除掉
        end 
     if @data!=@uid
      begin
        set @val=CONCAT(@val,@data)--添加最后一个字符串
      end
      set @txt=right(@val,1)--取最后一位字符串
      if @txt='、'--如果最后一个字符为特殊符号
        begin
            set    @val=left(@val,len(@val)-1)--那么删除最后一个特殊符号
        end
    end
    if @type=2--关注
    begin
    set @val=CONCAT(@data,'、'+@uid)--组装关注数据
    end
      update StudentInfoes set Name=@val where StudentId=@id--进行Update修改
    end 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值