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 |
댓글