以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.hufushizhe.com/bbs/index.asp) -- Oracle數(shù)據(jù)庫(kù) (http://www.hufushizhe.com/bbs/list.asp?boardid=65) ---- Oracle PLSQL中用pro進(jìn)行 BULK COLLECT 的高效率查詢(xún)處理 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=65&id=2506) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-11 11:09:53 -- Oracle PLSQL中用pro進(jìn)行 BULK COLLECT 的高效率查詢(xún)處理 過(guò)程樣例:
create or replace procedure real_user as c_count number(10); begin DECLARE TYPE mobile_type IS TABLE OF mobile_dabenying.mobile%TYPE; --按表字段類(lèi)型來(lái)定義變量類(lèi)型 t_mobile mobile_type := mobile_type(); BEGIN select mobile BULK COLLECT --批量選擇數(shù)據(jù) INTO t_mobile from (select mobile from mobile_dabenying order by mobile); if (t_mobile.COUNT > 0) then FOR i IN t_mobile.FIRST .. t_mobile.LAST LOOP select count(*) --從號(hào)段中過(guò)濾 into c_count from mobile_region where t_mobile(i) between start_mobile and end_mobile; if (c_count > 0) then c_count := 0; insert into mobile_dabenying2 (mobile) values (t_mobile(i)); --真實(shí)用戶(hù) else dbms_output.put_line(t_mobile(i)); insert into mobile_dabenying3 (mobile) values (t_mobile(i)); --假用戶(hù) end if; END LOOP; end if; END; end; |