以文本方式查看主题 - 曙海教育集团论坛 (http://peixun0.cn/bbs/index.asp) -- Oracle数据库 (http://peixun0.cn/bbs/list.asp?boardid=65) ---- Oracle PLSQL中用pro进行 BULK COLLECT 的高效率查询处理 (http://peixun0.cn/bbs/dispbbs.asp?boardid=65&id=2506) |
-- 作者:wangxinxin -- 发布时间:2010-12-11 11:09:53 -- Oracle PLSQL中用pro进行 BULK COLLECT 的高效率查询处理 过程样例:
create or replace procedure real_user as c_count number(10); begin DECLARE TYPE mobile_type IS TABLE OF mobile_dabenying.mobile%TYPE; --按表字段类型来定义变量类型 t_mobile mobile_type := mobile_type(); BEGIN select mobile BULK COLLECT --批量选择数据 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(*) --从号段中过滤 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)); --真实用户 else dbms_output.put_line(t_mobile(i)); insert into mobile_dabenying3 (mobile) values (t_mobile(i)); --假用户 end if; END LOOP; end if; END; end; |