• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
内蒙古峰回路转armyfeng
博客园    首页    新随笔    联系   管理    订阅  订阅

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

前几天我遇到一个问题,在处理程序文件下发过程中重复在数据库中生成一组数据,但操作过程中很可能会发生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
posted @ 2006-09-23 19:37  老冯  阅读(395)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3