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

80酷酷网    80kuku.com

  存储过程|数据|字符串

前几天我遇到一个问题,在处理程序文件下发过程中重复在数据库中生成一组数据,但操作过程中很可能会发生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 失败
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



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: