ITPub博客

首页 > 数据库 > Oracle > 12c Oracle新特性—FETCH

12c Oracle新特性—FETCH

原创 Oracle 作者:lilingfeng1 时间:2016-08-23 15:20:03 0 删除 编辑
在Oracle 12c中为了方便数据的分页显示操作,专门提供了FETCH语句,使用此语句可以方便地取得指定范围内的操作数据。
语法:
SELECT [DISTINCT] 分组字段1 [AS] [列别名],分组字段2 [AS] [列别名]
FROM 表名称 [表别名]
[WHERE 条件(S)]
[GROUP BY 分组字段1,分组字段2]
[HAVING 过滤条件(S)]
[ORDER BY 排序字段 ASC|DESC]
[FETCH FIRST 行数] | [OFFSET 开始位置 ROWS FETCH NEXT 个数] | [FETCH NEXT 百分比 PERCENT] ROW ONLY

在本语法中,FETCH语句放在整体查询语句的最后位置,该语句有3种使用方法:
FETCH FIRST 行数 ROW ONLY:取得前N行记录;
OFFSET 开始位置 ROWS FETCH NEXT 个数 ROWS ONLY:取得指定范围的记录;
FETCH NEXT 百分比 PERCENT ROWS ONLY:按照百分比取得记录;

通过实验案例来进行验证:
案例1:先查询scott.emp表的所有数据,然后取其前5行。
SYS@PRODCDB> select empno, ename, job, sal from scott.emp;

     EMPNO ENAME      JOB       SAL
---------- ---------- --------- ----------
      7369 SMITH      CLERK       800
      7499 ALLEN      SALESMAN      1600
      7521 WARD       SALESMAN      1250
      7566 JONES      MANAGER      2975
      7654 MARTIN     SALESMAN      1250
      7698 BLAKE      MANAGER      2850
      7782 CLARK      MANAGER      2450
      7788 SCOTT      ANALYST      3000
      7839 KING       PRESIDENT       5000
      7844 TURNER     SALESMAN      1500
      7876 ADAMS      CLERK      1100
      7900 JAMES      CLERK       950
      7902 FORD       ANALYST      3000
      7934 MILLER     CLERK      1300
      6688 aa      CLERK      1900

15 rows selected.

SYS@PRODCDB> select empno, ename, job, sal
  2  from scott.emp
  3  fetch first 5 row only;

     EMPNO ENAME      JOB       SAL
---------- ---------- --------- ----------
      7369 SMITH      CLERK       800
      7499 ALLEN      SALESMAN      1600
      7521 WARD       SALESMAN      1250
      7566 JONES      MANAGER      2975
      7654 MARTIN     SALESMAN      1250

案例2:取得表中第3~4行数据(所有行的记录都是从0开始的)
SYS@PRODCDB> select empno, ename, job, sal
  2  from scott.emp
  3  offset 2 rows fetch next 2 rows only;

     EMPNO ENAME      JOB       SAL
---------- ---------- --------- ----------
      7521 WARD       SALESMAN      1250
      7566 JONES      MANAGER      2975

案例3:按照10%和20%的百分比取数据
SYS@PRODCDB> select empno, ename, job, sal
  2  from scott.emp
  3  fetch next 10 percent rows only;

     EMPNO ENAME      JOB       SAL
---------- ---------- --------- ----------
      7369 SMITH      CLERK       800
      7499 ALLEN      SALESMAN      1600

SYS@PRODCDB> select empno, ename, job, sal
  2  from scott.emp
  3  fetch next 20 percent rows only;

     EMPNO ENAME      JOB       SAL
---------- ---------- --------- ----------
      7369 SMITH      CLERK       800
      7499 ALLEN      SALESMAN      1600
      7521 WARD       SALESMAN      1250


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30192548/viewspace-2123855/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-04-05

  • 博文量
    51
  • 访问量
    38500