前幾天我遇到一個問題,在處理程序文件下發過程中重復在數據庫中生成一組數據,但操作過程中很可能會發生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
新聞熱點
疑難解答