表:file_name_t(filename,date,flag)
我是想统计一下表file_name的记录。为了不重复统计,每次统计完了要将flag由0置为1。所以我想每次取(fetch)一条记录就更新(update)光标(或游标cursor)处的记录来实现。注意还有另外一个存储过程在不停的插往表里插数据。谁能帮我写一些简单OCI8i的句子来实现他(当然了,连接数据库,打开光标和帮定等可以不写了)。谢了

解决方案 »

  1.   

    fetch出以后,你直接构造一个Update语句,在执行此update语句,然后接着处理就可以了。我也作过类似的东西,只是现在不知到哪里去了,要不给你几份。
      

  2.   

    procedure name_pro(p_value data_type)
    is 
    cursor t_sor is
    select * from file_name_t;
    --where 条件=v_id;
    begin
    for v_sor in t_sor loop
    update file_name_t set flag=1 where filename=v_sor.filename;
    end loop;
    end name_pro;
      

  3.   

    fetch出以后,不能通过handle来判断是哪一个在fetch()fetch rowid出来 ,通过rowid来update
      

  4.   

    游标里加一个UPDATE不就行了??
      

  5.   

    游标里直接加不行的
    为了唯一性,还是fetch rowid出来然后再用where rowid = "rowid"来updata比较好吧
      

  6.   

    procedure name_pro(p_value data_type)
    is 
      cursor c_sor is
        select * from file_name_t where flag=0 for update of flag;
    begin
      for v_sor in t_sor loop
        ...
        update file_name_t set flag=1 where current of c_sor;
      end loop;
    end name_pro;
    /
      

  7.   

    "还有另外一个存储过程在不停的插往表里插数据",你打开一次光标,所能fetch的记录最多是打开时表中的所有记录,如果另一个存储过程还在不停的写,那你也就只有不停的打开了....!