想对表中一个列属性进行修改,下面是我写的过程
编译通过,执行也没有问题,但是不出结果
create or replace procedure haso
as
ha number(10):=45;
CURSOR mycursor is select gdls from ines_vc_ibss where state=0 for UPDATE OF gdls;
begin
open mycursor;
WHILE mycursor%FOUND LOOP
ha:=ha+1;UPDATE ines_vc_ibss set gdls=ha;
end loop;
close mycursor;
commit;
end;

解决方案 »

  1.   

    试试:
    CREATE OR REPLACE PROCEDURE HASO AS
      HA NUMBER(10) := 45;
      CURSOR MYCURSOR IS
        SELECT GDLS FROM INES_VC_IBSS WHERE STATE = 0 FOR UPDATE OF GDLS;
    BEGIN
      FOR I IN MYCURSOR LOOP
        HA := HA + 1;
        UPDATE INES_VC_IBSS SET GDLS = HA WHERE CURRENT OF MYCURSOR;
      END LOOP;
      COMMIT;
    END;
    /
      

  2.   

    试试:
    CREATE OR REPLACE PROCEDURE HASO AS
      HA NUMBER(10) := 45;
      CURSOR MYCURSOR IS
        SELECT GDLS FROM INES_VC_IBSS WHERE STATE = 0 FOR UPDATE OF GDLS;
    BEGIN
      FOR I IN MYCURSOR LOOP
        HA := HA + 1;
        UPDATE INES_VC_IBSS SET GDLS = HA WHERE CURRENT OF MYCURSOR;
      END LOOP;
      COMMIT;
    END;
    /
      

  3.   

    使用以下方式操作:
     for up_cur in ( select id from ines_vc_ibss where state=0 )
         ha:=ha+1; 
         update ines_vc_ibss set gdls=ha where id = up_cur.id
         commit;
     end for;
      

  4.   

    又贴晚了,哎。ps: 说明, 上文中的ID为ines_vc_ibss的主键。
      

  5.   

    CREATE OR REPLACE PROCEDURE HASO AS 
      HA NUMBER(10) := 45; 
      CURSOR MYCURSOR IS 
        SELECT GDLS FROM INES_VC_IBSS WHERE STATE = 0 FOR UPDATE
    BEGIN 
      FOR I IN MYCURSOR LOOP 
        HA := HA + 1; 
        UPDATE INES_VC_IBSS SET GDLS = HA WHERE CURRENT OF MYCURSOR; 
      END LOOP; 
      COMMIT; 
    END; 
      

  6.   

    首先测试一下你得查询有没有结果;select gdls from ines_vc_ibss where state=0 for UPDATE OF gdls; 
      

  7.   

    在每次循环时都会执行UPDATE ines_vc_ibss set gdls=ha; 对整个表进行更新也就是说最后一次的结果会覆盖前面的结果2楼的方法是正确的