dzrs.net
当前位置:首页 >> orAClE循环执行存储过程 >>

orAClE循环执行存储过程

a1 a2 a3也是存储过程吗? job其实上也只是分别调用这几个过程来执行,而不是靠执行一个a就可以让所有a1 2 3 4 并行执行的. 如果a1 2 3 4都是需要参数的话,那么你也只有用a分开给每一个都传递参数,否则的话也是不能并行执行的. 例如: declare n number begin dbms_job.submit('a1;a2;a3;a4',sysdate,'trunc(sysdate+1)'); commit; end; / 这样会让a1 2 3 4分别同时执行,你可以做一个改动就是让a给a*传递参数的动作 直接加入到a 1 2 3 4的过程当中才可以.

实现方式错了,批量移动数据应该使用Cursor,而不是像分页那样每次都查询.每次都查询可能会导致重复数据.正确方式应该是打开一个Cursor,循环Cursor来插入,使用计数器来控制每次COMMIT的行数:declare TYPE R_CURSOR IS REF

你的需求不需要使用存储过程的,一个简单的聚合函数就能实现吧.用存储过程反而麻烦,你想用的话,可以学习一下pl/sql相关的内容.

其实二楼写的最简单,但对于新手,最好别那么写,至于1楼,如果数据不是很多,没必要搞个游标.你也可以看看我写的create or replace procedure P_Update(o_vc_message out varchar2)is type column1 is table of table1.column1%type index

使用游标的时候一定要控制跳出循环的条件,每个循环结束记得fetch下一跳数据,不然就会无限循环.你的功能是插入数据,在做INSERT这段,用BEGIN END单独做成一个BLOCK吧,写个EXCEPTION, WHEN OTHERS THEN EXIT;我觉得基本就这几点会出现问题吧,你再看看吧.

这样吧,每次插入的时候先清空相应的数据(和插入的where条件相同),然后插入,然后提交,循环一次了.还有测试的时候单步走一下,看看具体哪块的问题!

beginfor i in select a.eid from testitem a loopreplaceitemresultdisplayindex (i.eid);end loop;end;

oracle中有三种循环(for、while、loop):1、loop循环:create or replace procedure pro_test_loop isi number;begini:=0;loop i:=i+1; dbms_output.put_line(i); if i>5 then exit; end if;end loop;end pro_test_loop;2、while循环:create or replace procedure pro_test_loop isi number;begini:=0;while i 评论0 0 0

方法如下: 1:运行cmd进入命令行界面 2:进入到存放批量sql的文件夹下面 3:输入命令 sqlplus 数据库名/密码@数据库 按回车键 4:输入spool 指定路径:\a.log 按回车键 (此步骤的主要作用就是追踪批量执行sql的日志,路径随便写,只要

存储过程如下:CREATEORREPLACEPROCEDURETEST(parm_ninteger)ASiinteger:=0;sinteger:=0;s1integer:=1;s2integer:=0;BEGINdbms_output.put(1);whileiexectest(12)1,1,2,3,5,8,13,21,34,55,89,144,233,377PL/SQL过程已成功完成.

网站首页 | 网站地图
All rights reserved Powered by www.dzrs.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com