create or replace PROCEDURE  
begin
   for class_name in tb_student loop
   for class_name in tb_class loop
   if(tb_class.class_id=tb_student.class_id){ --如果 tb_class 的当前 clas_id 等于 tb_student 表的 clas_id
   update tb_student set class_name=class_name;
   }
   end loop;
   end loop;
end;我这样 肯定不对,菜鸟请教大家

解决方案 »

  1.   

     这种情况必须定义行类型的变量来解决:
     declare
        row_data tb_student%ROWTYPE
     for row_data in tb_student loop
           update student st  set st.class_name = row_data.class_name
           where st.class_id  = row_data.class_id 
     end loop;
    但这样种循环更新效率确实很低,SQL是面向集合的运算,像你这种需求可以用一条更新SQL外加子查询来解决,不建议用循环来做。
      

  2.   

    双for循环,如果数据量大的话~~~那等的时间可就久了~~~开发中基本不会用到~~~