存储过程中怎样使用游标,这样写错在哪里??
create or replace procedure del_tab is
 cursor mycur is 
  select clbh from xxfl where jgsj<=add_months(sysdate,-1);
begin
 for var_clbh in mycur loop
  delete from tpxx where tpid=var_clbh;
  delete from xxfl where clbh=var_clbh;
  delete from bjxx where clbh=var_clbh;
  commit;
 end loop
end;

解决方案 »

  1.   

      delete from tpxx where tpid=var_clbh.clbh;
      

  2.   

    create or replace procedure del_tab is
     cursor mycur is 
      select clbh from xxfl where jgsj<=add_months(sysdate,-1);
    begin
     for var_clbh in mycur loop
      delete from tpxx where tpid=var_clbh.clbh;
      delete from xxfl where clbh=var_clbh.clbh;
      delete from bjxx where clbh=var_clbh.clbh;
      commit;
     end loop
    end;
    警告: 创建的过程带有编译错误。
      

  3.   

    CREATE OR REPLACE PROCEDURE del_tab
    IS
       CURSOR mycur
       IS
          SELECT clbh
            FROM xxfl
           WHERE jgsj <= ADD_MONTHS (SYSDATE, -1);
    BEGIN
       FOR var_clbh IN mycur
       LOOP
          EXIT WHEN var_clbh%NOTFOUND;      DELETE FROM tpxx
                WHERE tpid = var_clbh.clbh;      DELETE FROM xxfl
                WHERE clbh = var_clbh.clbh;      DELETE FROM bjxx
                WHERE clbh = var_clbh.clbh;
       END LOOP COMMIT;
    END;
      

  4.   

    CREATE OR REPLACE PROCEDURE del_tab
    IS
       CURSOR mycur
       IS
          SELECT clbh
            FROM xxfl
           WHERE jgsj <= ADD_MONTHS (SYSDATE, -1);
    BEGIN
       FOR var_clbh IN mycur
       LOOP
          EXIT WHEN var_clbh%NOTFOUND;      DELETE FROM tpxx
                WHERE tpid = var_clbh.clbh;      DELETE FROM xxfl
                WHERE clbh = var_clbh.clbh;      DELETE FROM bjxx
                WHERE clbh = var_clbh.clbh;
       END LOOP;
       COMMIT;
    END;