利用mssql存储过程处理“,”分隔字符串,并写入数据表

本文介绍了一种通过MSSQL存储过程来处理包含逗号分隔字符串并将其拆分后插入数据表的方法,有效避免了SQL连接超时的问题。

前几天我遇到一个问题,在处理程序文件下发过程中重复在数据库中生成一组数据,但操作过程中很可能会发生sqlconnect连接超时问题,于是用存储过程解决这个问题:
create procedure insertdocx(@p_struserid varchar(4000),@sdocid varchar(50))
as
--本存储过程处理用户发送文件下发功能
--定义输入参数:
--@p_struserid:输入userid以","分隔的字符串,
--如:00001,00002,00029,00030,00062
--@sdocid:输入主文档doc的id值
--实现拆分userid以","分隔的字符串后,insert到docx表中

declare @v_struserid varchar(4000)
declare @userid varchar(50)
declare @v_docid varchar(50)
declare @return int    --数据处理结果返回值:0成功,1 失败

和 "利用mssql存储过程处理“,”分隔字符串,并写入数据表" 有关的数据库 编程小帖士:

strong>RAWTOHEX
        RAWTOHEX 函数将一raw转换成十六进制字符表示的串值。
declare @m int    --定位分隔符的位置
declare @n int    --位置偏移

set @v_struserid=@p_struserid
set @return=0
set @n=1
set @m=charindex(',',@v_struserid)

while @m>0
    begin
  set @userid=substring(@v_struserid,@n,@m-@n)
  --print @userid
  begin
      insert into imdocx (docxid,docxuserid,docxdocid,docxinserttime,docxreadstate)
      values ('3',@userid,@v_docid,getdate(),'未阅')
      if @@rowcount = 0
      set @return=1
  end
 
  set @n=@m+1
  set @m=charindex(',',@v_struserid,@n)
    end

return @return

go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值