各位高手:请教一个同时取得,删除数据库记录的问题

dou30305827 2003-10-19 02:02:46
我现在有一个问题:是这样的:
我现在做的一个项目。关于用户购买记录的。当服务器关闭后,要求用户还能够购买东西。只不过这些购买信息被写到一个oracle数据库中,注意:可能用户同时写入大于1条的购买信息。当下次当服务器恢复后,用户再次登陆时候,必须从数据库中先取得一条记录出来,,然后删除在oracle中的该记录,写入服务器成功后。接着,执行取下一条记录的读写,删除,然后写入服务器,直到所有记录被完成!我的问题是:如何写一段好的程序实现取出记录,接着删除记录,然后在取出记录,删除记录!
...全文
27 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
swinging 2003-10-19
  • 打赏
  • 举报
回复
给你写个例子:
给你个例子:
drop table testTable;
create table testTable (id number, testResult varchar2(200));
insert into testTable (id, testResult) values(1, 'test 1');
insert into testTable (id, testResult) values(2, 'test 2');
insert into testTable (id, testResult) values(3, 'test 3');
insert into testTable (id, testResult) values(4, 'test 4');
commit;

CREATE OR REPLACE FUNCTION
t(param number) RETURN VARCHAR2
IS
result VARCHAR2(200);
BEGIN
delete from testTable where id=param returning testResult into result;
commit;
return (result);
END;
/

直接在SQL*PLUS中运行,会建立一张测试用的表,和一个FUNCTION,
这个FUNCTION的作用是,删除你要删除的行,并返回该行的一个叫testResult字段的值,
传入参数是要删除行的id,
你可以运行下看效果。这个确实是只用一句就搞定的,
对于你的情况,会这样,一次DELETE所有记录,然后RETURNING所有记录到一个打开的游标,
然后返回该游标。
对于这样的大批量的数据库集中操作,使用存储过程是一个比较好的选择。
swinging 2003-10-19
  • 打赏
  • 举报
回复
晕,应该是一次性取出所有记录,然后一次性删除所有。操作这2次是必要的。
当然,如果使用存储过程,
可以将这2次并起来。
所以解决办法很简单,
写个存储过程,一次取出所有记录做为返回值,然后删除所有记录。
还有一个,就是,使用ORACLE的话,DELETE可以有一个RETURNING子句,返回删除记录的某个字段或全部字段值。
yaray 2003-10-19
  • 打赏
  • 举报
回复
无解

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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