在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/
,如需转载,请注明出处,否则将追究法律责任。