OCI编程问题——如何从表中取出一条记录,将其更新,然后在取下一条,在更新,....

unix_socket 2003-01-05 07:24:03
表:file_name_t(filename,date,flag)
我是想统计一下表file_name的记录。为了不重复统计,每次统计完了要将flag由0置为1。所以我想每次取(fetch)一条记录就更新(update)光标(或游标cursor)处的记录来实现。注意还有另外一个存储过程在不停的插往表里插数据。

谁能帮我写一些简单OCI8i的句子来实现他(当然了,连接数据库,打开光标和帮定等可以不写了)。谢了
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bird93 2003-04-11
  • 打赏
  • 举报
回复
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;
/
ihatemoon 2003-04-11
  • 打赏
  • 举报
回复
游标里直接加不行的
为了唯一性,还是fetch rowid出来

然后再用where rowid = "rowid"来updata比较好吧
Lastdrop 2003-04-11
  • 打赏
  • 举报
回复
"还有另外一个存储过程在不停的插往表里插数据",你打开一次光标,所能fetch的记录最多是打开时表中的所有记录,如果另一个存储过程还在不停的写,那你也就只有不停的打开了....!
tomhuang 2003-01-06
  • 打赏
  • 举报
回复
游标里加一个UPDATE不就行了??
三杯倒 2003-01-06
  • 打赏
  • 举报
回复
fetch出以后,不能通过handle来判断是哪一个在fetch()

fetch rowid出来 ,通过rowid来update
beckhambobo 2003-01-06
  • 打赏
  • 举报
回复
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;
okcsdn 2003-01-06
  • 打赏
  • 举报
回复
fetch出以后,你直接构造一个Update语句,在执行此update语句,然后接着处理就可以了。

我也作过类似的东西,只是现在不知到哪里去了,要不给你几份。

3,498

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧