网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  oracle数据库中获取固定记录数的实用方法     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:84次  录入:管理员--2008-04-15  
 

【赛迪网-it技术报道】在实际的工作和学习中,为了分页或查询性能的需要,往往需要从数据库查询固定行数的记录,不同的数据库有不同的sql语句来完成,在oracle数据库中,我们可以用下面的方法来实现,假设要从一个有百万条记录的表中每次取10万条进行处理,可以按下面步骤进行:

1、创建表

drop table vehicle;

create table vehicle (

make varchar2(256) not null,

model varchar2(256),

registration_no number(15) not null primary key,

age number(2,1) not null,

category varchar(1) not null,

milage number(15,2) not null,

last_service_date date not null

);

2、插入数据

可以用入下存储过程进行批量数据的插入,

create or replace procedure insert_appointed_records

( startnum in number, endnum in number) as

i number:=startnum;

j number:=endnum;

begin

dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );

while i<=j loop

insert into

vehicle (registration_no,make,model,age,category,milage,last_service_date)

values

(i,'test','test',3,'a',1000,sysdate);

i:=i+1;

end loop;

dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );

end insert_appointed_records;

3、查询固定行数的记录

在oracle数据库中需要结合rownum来完成,可以用如下方法来实现,如要取按rowid排序的5000到10000之间的记录

select * from vehicle where rownum<10001 minus select * from vehicle where rownum<5001;

如果需要按照某字段排序来查询,如,按制造商make来排序,就需要用到子查询,性能就会有明显的影响

select * from (select * from vehicle order by make) where rownum<10001 minus select * from (select * from vehicle order by make) where rownum<5001;

由于你对rownum不能用像 where rownum >10 and rownum <100这样的语法,所以有点别扭,但是你可以通过以下方式来用:

select * from (select rownum r,registration_no,make,model,age,category,milage,last_service_date from vehicle) where r >=5000 and r<=10000;

或者

select * from (select rownum r,registration_no,make,model,age,category,milage,last_service_date from vehicle) where r between 5000 and 10000;

这样就比较合符习惯了,不能用如下语句:

select * from (select * from vehicle order by make) where rownum between 5000 and 10000;

或者

select * from (select * from vehicle order by make) where rownum >= 5000 and rownum<=10000;

 
 
上一篇: 实例讲解ora-12514和ora-12514解决方法    下一篇: oracle数据库备份与恢复精华资料集锦 (1)
  相关文档
轻松掌握优化oracle网络设置的解决方案 (1) 01-25
用一个实例讲解oracle数据库的pl/sql语句块 07-30
讲解oracle优化器的优化方式和优化模式 (1) 03-27
Oracle DBA数据库日常维护完全手册 04-23
怎样在数据字典中直接修改oracle表列名 11-15
如何查找运行在系统里的"bad sql"语句 02-03
轻松掌握数据库及数据仓库的建模方法 03-04
教你如何快速转移Oracle中海量数据 04-11
帮你完全了解 Oracle 标签安全测试 05-13
实例讲解清除oracle10g rac crs的方法 02-27
为什么oracle有时会用索引来查找数据? 11-15
在UNIX服务器上设置Oracle8i全文检索 05-13
oracle数据库pl/sql过程调试的输出方法 08-18
进行logmnr操作时发现空列名的具体原因 02-27
重启后出现ora-00600 4194错误的解决方法 (1) 03-03
使用Oracle Text构建全文搜索应用程序 05-13
快速掌握一个获取单据编号存储过程示例 04-09
解决未找到oracle客户端和网络组件现象 04-22
剖析Oracle的网络结构轻松解决连接问题 09-29
通过JDBC连接Oracle数据库的十大技巧 04-11
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息