sql 儲存過程接收不定量引數 比較分析寫入資料庫

2021-05-23 15:15:56 字數 1787 閱讀 7213

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,'  傳遞的引數要一一對應,逗號分隔符是字串的最後一位。

c 學習之不定量引數篇

2 va arg va list arg,typename 目的 根據不定量引數的首位址和型別名,來進行不同的偏移取值 注意 這個函式每用一次,引數便讀一次。通過多次使用這個函式來達到讀取全部引數的功能 3 va end va list arg 目的 釋放這塊記憶體 include include ...

SQL分頁儲存過程比拚

1 sql server 儲存過程的分頁,這個問題已經討論過幾年了,很多朋友在問我,所以在此發表一下我的觀點 2 建立表 4 create table testtable 5 id int identity 1,1 not null 6 firstname nvarchar 100 collate ...

sql儲存過程in 多個引數

首先要建立乙個擷取字串的函式,新建乙個查詢,把下面 複製進去執行。函式sqlitin的第乙個引數是儲存過程要in的字串,第二個引數是分隔符 create function splitin c varchar 200 split varchar 2 returns t table col varcha...