SQL SERVER 「陣列引數」

2021-04-22 00:16:43 字數 1239 閱讀 3077

寫過程時碰到這麼乙個問題,需要在庫里處理n條資料,不想在程式裡迴圈造成多次訪問資料庫

而sql sever又不支援陣列引數,嘗試了兩種方法,在此做筆記如下(省略了單條資料的處理,用#temp是為了顯示結果)

1.利用replace

create table #temp

(ss varchar(

200) not 

null

)declare @str varchar(

200)

declare @result varchar(

1000

)set@str='

aaa,bb,c,d,e,ffffff

'set@result ='

insert into #temp(ss) select 

'''+

replace(@str,',

','''union select

''')

+''''

exec(@result)

select 

*from #temp

2.利用charindex和substring

create table #temp

(ss varchar(

200) not 

null

)declare @str varchar(

200)

declare @curr 

intdeclare @prev 

intset@str='

aaa,bb,c,d,e,ffffff

'set@curr=1

set@prev=1

while

@prev 

<

len(@str)

begin

set@curr

=charindex(',

',@str,@prev)

if@curr

>

@prev

insert #temp select substring(@str,@prev,@curr

-@prev)   

else

begin

insert  #temp select substring(@str,@prev,len(@str)

-@prev+1

)break

endset@prev

=@curr+1

endselect 

*from #temp

SQL Server儲存過程 對陣列引數的迴圈處理

sql server儲存過程 對陣列引數的迴圈處理 方法一 分割 例 通過sql server儲存過程傳送陣列引數刪除多條記錄 eg.id 值為 1,2,3 以下儲存過程就是刪除表中id號為1,2,3的記錄 create procedure deletenews id nvarchar 500 as...

sql server 全域性引數

1 identity 返回最後插入的標識值。這個變數很有用,當你插入一行資料時,想同時獲得該行的的id 標示列 就可以用 identity 示例 下面的示例向帶有標識列的表中插入一行,並用 identity 顯示在新行中使用的標識值。insert into jobs job desc,min lvl...

C 引數陣列與陣列引數

1 陣列作為引數來傳遞時,當呼叫這個函式時裡面的引數需要new乙個陣列 2 引數陣列就是在函式的陣列引數前面加上params,當呼叫函式傳遞陣列時不需要再new乙個,只需要傳遞任意個跟陣列引數型別相同的數就可以 using system namespace 1 引數陣列 return sum sta...