前几天我遇到一个问题,在处理程序文件下发过程中重复在数据库中生成一组数据,但操作过程中很可能会发生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 @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
本文介绍了一种通过MSSQL存储过程来处理包含逗号分隔字符串并将其拆分后插入数据表的方法,有效避免了SQL连接超时的问题。
1119

被折叠的 条评论
为什么被折叠?



