/** --将相同分类下的知识分配到不同的分类下面 -- whwu2 */ create or replace procedure test_pro --定义存储过程名 is row_num number := 1; --变量的声明与赋初始值 total_num varchar2(1000); --变量的声明 tmp_kbcCode varchar2(1000); CURSOR myCusor IS --游标的定义 select tt.kbccode from knowledgebase_category tt; begin WHILE row_num <= 3 LOOP dbms_output.put_line('执行while循环'); ---打印一些调试信息 row_num := row_num +1; END LOOP; --------------方法的执行体------------------------------ select to_number(count(1)) into total_num from knowledge; --对 total_num 进行赋值 dbms_output.put_line('Total_num' || total_num); ---打印一些调试信息 open myCusor; --打开游标 loop fetch myCusor into tmp_kbcCode; --循环遍历游标,并把游标里面的值依次赋给 tmp_kbcCode exit when myCusor%notfound; if (row_num + 10) < total_num then -- if 条件 update knowledge tt set tt.kbccode = tmp_kbcCode where tt.kcode in (select kcode from (select t.kcode, rownum rn from knowledge t) where rn >= row_num and rn <= row_num + 10); row_num := row_num + 10; end if; end loop; commit; end test_pro;