存储过程中使用显式游标的思考
而显示游标(open - close)的使用有些争议,效率不高,内存泄露等问题。
1.效率问题
a.如果数据量不大,并且一个sql能完成的功能,是没必要使用游标
b.数据量巨大,即使简单的update也会卡到死,我会考虑使用游标循环处理(包括隐式和显式游标);又引出一个话题,如果对巨量数据做更新做优化?使用批量更新,循环把数据放到数组里,然后每1万条update一次?循环update,每一万条commit一次?创建临时表,给每行编行号,然后 使用行号做限制条件一万条处理一次?如果有好的建议请不要吝啬
例如:如果表t1有5千万条数据,更新到表t2中,对t1来讲是每条数据都需要处理,怎么办?
2.内存问题
a.open 的游标,使用之后close,这样还有内存泄露么?我不知道,坐等回复
b.有人说使用游标之后数据库变慢了,内存占用的多了,这个怎么解释
相关推荐
sqlserver游标存储过程的使用
NULL 博文链接:https://gz383.iteye.com/blog/635513
详解Oracle隐式游标和显式游标
游标是什么?就是在内存开辟的一块临时存储空间。 1.Oracle隐式游标 1.1Oracle有常用的哪些隐式游标 1.2 Oracle隐式游标演示 -- 隐式游标 (使用的表为Oracle默认自带的emp表) -- sql%rowcount:影响记录条数 sql%found:是否有满足条件的记录 set serveroutput on; declare v_ename a_emp.ename%type; begin select ename into v_ename from a_emp where empno=7788; if sql%found then dbms_output.p
navicat中创建存储过程、触发器和使用游标的简单实例(图文)
主要介绍了navicat中创建存储过程、触发器和使用游标的简单实例,需要的朋友可以参考下
Oracle存储过程游标用法分析
本文实例讲述了Oracle存储过程游标用法。分享给大家供大家参考,具体如下: 使用游标的5个步骤 1、声明一些变量用于保存select语句返回的指 2、声明游标,并指定select 语句 3、打开游标 4、从游标中获取记录 5、关闭游标 从游标中获取每一条记录可使用fetch语句。fetch语句将列的指读取到指定的变量中; 语法: fetch cursor_name into variable[, variable ...]; 例子: create or replace procedure sel_person is v_id person.id%type; v_name person.
Oracle显示游标的使用及游标for循环
下面给大家介绍在什么情况下用隐式游标,什么情况下用显示游标: 1.查询返回单行记录时→隐式游标; 2.查询返回多行记录并逐行进行处理时→显式游标 –显示游标属性 declare CURSOR cur_emp IS SELECT * FROM emp; row_emp cur_emp%ROWTYPE; BEGIN OPEN cur_emp; FETCH cur_emp INTO row_emp; WHILE cur_emp%FOUND LOOP dbms_output.put_line(row_emp.empno||'----'||row_emp.ename); FETCH cur_emp


