您的位置:首页 > 数据库 > Oracle

Oracle中使用fetch bulk collect into批量读取游标数据

2013-11-30 20:50 357 查看
Oracle中使用fetch bulk collect into批量读取游标数据
DECLARE
l_return_status VARCHAR2(1);
l_msg_data      VARCHAR2(2000);
TYPE contacts_type IS TABLE OF sr_contacts%ROWTYPE;
v_contacts contacts_type;
         CURSOR all_contacts_cur IS
SELECT * FROM sr_contacts WHERE rownum <= 1;
--cursor的字段数要与要循环插入的表中的字段数一致且一一对应

BEGIN
OPEN all_contacts_cur;

LOOP
FETCH all_contacts_cur BULK COLLECT
INTO v_contacts LIMIT 256;

FOR i IN 1 .. v_contacts.count LOOP
INSERT INTO sr_contacts VALUES v_contacts (i); --循环执行插入程序
END LOOP;
EXIT WHEN all_contacts_cur%NOTFOUND;
END LOOP;
CLOSE all_contacts_cur;

EXCEPTION
WHEN OTHERS THEN
l_return_status := fnd_api.g_ret_sts_error;
l_msg_data      := SQLERRM;
END;

注意事项
1、如注释中所说游标中的字段数要与记录组的字段数一致
2、使用fetch bulk collect into最后要加上limit作为限制,限制的数量根据系统的内存表的配置大小,如果不加控制、数据量又很大时,进行fetch时将没有数据能够插入到记录组中,而且程序不会报错


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle cursor bulk into
相关文章推荐