본문 바로가기
Programming/Oracle

오라클 페이징

by NAMP 2015. 6. 19.



Paging

일반적인 오라클 페이징 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT FROM (
     SELECT A.*,
                 ROWNUM AS RNUM,
                 FLOOR((ROWNUM-1)/{디스플레이수}+1) AS PAGE,
                 COUNT(*) OVER() AS TOTCNT FROM (
          {검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
    ) A
WHERE PAGE = {페이지번호};
  
OR
  
SELECT FROM (
     SELECT A.*,
                 ROWNUM AS RNUM,
                 COUNT(*) OVER() AS TOTCNT FROM (
          {검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
    ) A
WHERE RNUM > {범위부터} AND RNUM <= {범위까지};


오라클 대용량 페이징 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT FROM (
     SELECT ROWNUM AS RNUM, A.* FROM (
          {검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
    ) A WHERE ROWNUM <= {범위까지}
WHERE RNUM > {범위부터};
  
OR
  
SELECT FROM (
     SELECT /*+ INDEX_ASC or INDEX_DESC(A {정렬조건 인덱스명}) */
                 ROWNUM AS RNUM, A.*  FROM (
          {검색쿼리 - 정렬이 필요한 경우 정렬조건을 포함하지 않고 ORACLE 힌트사용}
     ) A WHERE ROWNUM <= {범위까지}
WHERE RNUM > {범위부터};

이 쿼리를 사용하기 위해서, 호출이전에 출력할 줄번호의 시작과 끝을 미리 계산 하여야 함.

한 줄이 20이고, 1페이지라면, 출력 줄번호는 1~20이 됨. 한 줄이 20이고, 2페이지라면, 출력 줄번호는 21~40이 됨.

r = 20, p =1
(p-1) * r + 1 = s
p * r = e

[JAVA] String to int, int to String 형변환


String to int

String from = "123";
int to = Integer.parseInt(from);

int to String

int from = 123;
String to = Integer.toString(from);

범위용 쿼리 사용시 주의 사항

Error parsing XML.  Cause: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

부등호 <> 는 태그로 인식하기 때문에 문제가 발생함. 따라서, <![CDATA[ ]] 로 감싸주어야 함.


참고


'Programming > Oracle' 카테고리의 다른 글

[오라클] Undo tablespace  (0) 2016.01.11
Oracle HINT  (0) 2014.12.01
ORACLE REGEXP  (0) 2014.11.04
# 데이터베이스 설계서 작성을 위한 쿼리  (0) 2014.07.31
[오라클] PK 컬럼 얻기  (0) 2012.10.09

댓글