存储过程中用什么可以替代游标
一般说来,当操作的数据超过1万条时,就避免用游标吧。为了测试游标性能,写了下面一个游标对IDC_Gather_Info表中数据进行遍历 下面是当表中数据分别为15万、5万、1万时游标的表现:1.数据量15万,存储过程执行失败,提示错误:Incorrect key file for table '\/tmp\/#sql_3044_0.MYI';try to rep...
逐条处理记录,不使用游标,有什么方法
如果是c#、java,可以把数据取到本地放到数据集或者记录集里面,然后一条一条处理。如果是存储过程,那么用游标是比较方便的;否则可以考虑明确好查询条件(未处理的条件),排序规则,每次只查询一条(sqlserver的top,oracle的rownum<=1),经过n多次查询,来处理。
存储过程,如果不用游标,可以用什么代替
少用游标。尽量用一条sql语句代替。或者用多条SQL语句分批处理。有时间多看看开窗语句,很实用。
在存储过程中,为了在一个结果集的记录中进行循环,除了用游标还能用其...
将临时表 换成表变量也可以 不用游标可以避免 游标的释放问题和游标重名的问题。如果只是为了速度 就无所谓了,游标的性能没有大家说的那么差,关键就看你怎么写就是了 没有环境,自己调整一下吧
6、什么是存储过程?什么是游标,何时使用、何时不用游标?
存储过程是一组命名了的SQL语句集合,是为了完成特定功能汇集而成的。该集合编译后存放在数据库中,可根据实际情况重新编译,可直接运行,也可远程运行且存储过程直接在服务器端运行。游标实际上是一种能从包括多条数据记录的结果集(结果集是select查询之后返回的所有行数据的集合)中每次提取一条记录的...
oracle中存储过程执行很长时间,用了三个游标。
不用看执行计划都知道慢了,for c1 for c2 for c3 这种没有任何条件的三重循环的时间复杂度为C1记录数*C2记录数*C3记录数,你得尽量减少循环次数,能用sql就不要用游标循环了
求oracle存储过程,同时删除两张表中的id相同的数据
手上没有环境,大概说一下我的方法,方法一(不用游标,变量,需要中间表):1.创建临时表(或者创建个表也可以,用一次删一次)即中间表。2.取出两个表相同的ID记录,将ID插入中间表 3.对应中间表中的id,删险两表中的记录。4.清除中间表 方法二(要用游标、变量):1.建立游标,用游标取出两表...
sqlserver存储过程可以遍历一个查询出来的结果集吗
select a.col_a,a.col_b from tab_A a open C_cursorname fetch next from C_cursorname into @var_col_a,@var_col_b while @@fetch_status!=0 begin --具体实现 fetch next from C_cursorname into @var_col_a,@var_col_b end --大致是这样的。但不推荐用游标,游标效率太低...
sql存储过程耗时太长
多长都有可能,40是很正常的。1.尽量优化语句,尽量少用游标。2.修改较为常用的表要注意,最好先在临时表中作好运算和其它处理,最后在修改这些表,以免较慢的存储过程长时间锁定表记录,影响数据正常使用。3.将连接超时和命令超时适当扩大,以免超时错误。
oracle存储过程游标使用疑问
你第一个存储过程可以这样写:create or replace procedure d_1 is begin for cur in (select * from t_t) ---这个cur是隐式游标,无需定义,直接使用。loop dbms_output.put_line(cur.name);end loop;end;\/ 2、使用的是标准的显式游标 a 定义游标---Cursor [Cursor Name] IS;b ...