晕,应该是一次性取出所有记录,然后一次性删除所有。操作这2次是必要的。
当然,如果使用存储过程,
可以将这2次并起来。
所以解决办法很简单,
写个存储过程,一次取出所有记录做为返回值,然后删除所有记录。
还有一个,就是,使用ORACLE的话,DELETE可以有一个RETURNING子句,返回删除记录的某个字段或全部字段值。
当然,如果使用存储过程,
可以将这2次并起来。
所以解决办法很简单,
写个存储过程,一次取出所有记录做为返回值,然后删除所有记录。
还有一个,就是,使用ORACLE的话,DELETE可以有一个RETURNING子句,返回删除记录的某个字段或全部字段值。
解决方案 »
- 请教:JavaWeb的富文本策略问题
- eclipse中创建dynamic web project的场合,如何确定 dynamic web model version
- 【all】树生成效率???
- 安装eclipse出现得错误
- 如何查看websphere的日志?
- 如何不刷新的情况下动态收入进行模糊查询!
- 在使用jspSmartupload组件上传中文件时,可以正常上传,(上传后的文件名仍是中文,也就是正常上传正确),但是,如果在上传时(文件名是
- 请问数据库连接池中的db.properties文件该放在那里才能读?
- B/S模式分页打印
- 急问一个关于oracle中文支持的问题
- 画数据图形的javabean在jsp页面中怎么调用呢?要给bean传输数据还要显示出来
- JSP至今还没有调试成功,哪位帮帮我
给你个例子:
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所有记录到一个打开的游标,
然后返回该游标。
对于这样的大批量的数据库集中操作,使用存储过程是一个比较好的选择。