SQL 儲存過程 傳入陣列引數

2022-09-15 10:30:14 字數 1050 閱讀 6531

今天在做統計資料的時候,傳入陣列導致資料不顯示。解決方式和大家分享一下:

--引數@companyname='北京,天津,上海'

declare @pointerprev int

declare @pointercurr int

declare @tname nvarchar(100)

set @pointerprev=1

while (@pointerprev < len(@companyname))

begin

set @pointercurr=charindex(',',@companyname,@pointerprev)

if(@pointercurr>0)

begin

set @tname=substring(@companyname,@pointerprev,@pointercurr-@pointerprev)

--我們可以在這裡直接進行刪除或修改

delete from testa    where name=@tname

--如果作為查詢條件,我需要建立乙個臨時表,將資料插入進去

--insert into #cnametable (name) values (@tname)

--insert into #cnametable (name)  select name from testname where name like '%'+@tname+'%'

--這裡的testname 表中數劇量大時會降低查詢速度,建議大家用其他方式處理,例如指標、重新拼接字串等

set @pointerprev = @pointercurr+1

end

else

break

end

--因為最後乙個後面沒有逗號,所以在迴圈中跳出,需另外再刪除

set @tname=substring(@companyname,@pointerprev,len(@companyname)-@pointerprev+1)

delete from testa    where name=@tname

oracle 向儲存過程傳入陣列型別引數

最近想試試給儲存過程傳陣列引數,破費周折,在這裡與大家分享下 我用的plsql,開啟plsql,在type目錄下面,可以建立自定義的資料型別,於是用 create or replace type tab str as table of varchar2 30 建立了乙個陣列型別。接著用儲存過程 pr...

oracle儲存過程傳入in引數,返回結果集

create or replace procedure proc report test zhxshss in varchar2,pcursor out sys refcursor asbegin open pcursor for select from sys user t where t.id ...

傳入和傳出引數的MYSQL儲存過程

下文為您介紹的是php呼叫mysql儲存過程中呼叫傳入引數的儲存過程及傳出引數的儲存過程這兩種情況,該呼叫方法供您參考,希望對您有所幫助。傳入引數的mysql儲存過程 sql create procedure myproce2 in score int begin if score 60 then ...