首页 > 数据库 > SQL Server > 正文

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

2024-08-31 00:49:29
字体:
来源:转载
供稿:网友

前几天我遇到一个问题,在处理程序文件下发过程中重复在数据库中生成一组数据,但操作过程中很可能会发生sqlconnect连接超时问题,于是用存储过程解决这个问题:
create procedure insertdocx(@p_struserid varchar(4000),@sdocid varchar(50))
as
--本存储过程处理用户发送文件下发功能
--定义输入参数:
[email protected]_struserid:输入userid以","分隔的字符串,
--如:00001,00002,00029,00030,00062
[email protected]:输入主文档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 @[email protected]_struserid
set @return=0
set @n=1
set @m=charindex(',',@v_struserid)

while @m>0
    begin
        set @userid=substring(@v_struserid,@n,@[email protected])
        --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 @[email protected]+1
        set @m=charindex(',',@v_struserid,@n)
    end

return @return

go


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表