sql 存储过程接收不定量参数 比较分析写入数据库

CREATE PROCEDURE  dbo.UpdateBrowserData
   @browserType  varchar(200), --定义须查询的字符串  (浏览器类型)
   @counter varchar(200) --定义须查询的字符串  (浏览器计数)
as
declare @type varchar(50) --截取出来的浏览器类型
declare @count int --截取出来的浏览器计数

declare @browPos int  --定义分隔符','的位置  (针对浏览器类型截取来用的)
declare @browLen int  --定义截取出来的子字符串的长度  (针对浏览器类型截取来用的)

declare @countPos int  --定义分隔符','的位置 (针对浏览器计数来用的) 
declare @countLen int  --定义截取出来的子字符串的长度 (针对浏览器计数来用的)  
set @browPos=Charindex(',',@browserType,0) --Charindex(分隔符,被查询的字符串,查询起始位置),这里是取分隔符','出现的位置    
set @countPos=Charindex(',',@counter,0)    

while(@browPos>0)  

begin 
    set @type=Substring(@browserType,0,@browPos) --Substring(被查询的字符串,起始位置,截止位置),根据分隔符的位置截取字符串 
    set @count= cast(Substring(@counter,0,@countPos) as int)

    set @browLen=len(@type)  --len(子字符串),取得子字符串的长度  
    set @countLen=Len(@count)  
    IF((select count(browserType)  from  tbBrowser  WHERE  browserType = @type)= 0) --判断是否已经存在这种类型  
     BEGIN
         insert into  tbBrowser ([browserType],[count]) values (@type,@count)--不存在就写入
     END
   ELSE
     BEGIN 
         update tbBrowser  set [count]= @count  where [browserType] = @type --存在就更新数据
     END
    select @type --输出测试来用
    select @count  --输出测试来用
    set @browserType=Stuff(@browserType,1,@browLen+1,'') --Stuff(被查询的字符串,起始位置,截止位置),把子字符串从被查询的字符串中去除 
    set @counter=Stuff(@counter,1,@countLen+1,'')
    set @countPos=Charindex(',',@counter,0)
    set @browPos=Charindex(',',@browserType,0)   --控制循环的条件  
end
go

exec  UpdateBrowserData  'IE4,IE5,IE6,', '0,1,2,'

最后需要注意的是 这句exec  UpdateBrowserData  'IE4,IE5,IE6,', '0,1,2,'  传递的参数要一一对应,逗号分隔符是字符串的最后一位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值