오라클 페이징 관련입니다.
- 작성자 :
- 이*영
- 작성일 :
- 2009-09-16 15:07:34
- 조회수 :
- 4,702
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
eGov에서 제공하고 있는
egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo 을 이용하여 페이징을 구현하려고 합니다.
PaginationInfo 클래스의 시작번호(startIndex), 종료번호(endIndex) 기준은
HsqlDB, MySQL 의 LIMIT 기준으로 나와있네요.
오라클 페이징은 서브쿼리와 ROWNUM을 이용하여서 구현을 해야 하는데요.
오라클은 시작번호가 0이 아니고 1로 시작하는 걸로 알고 있습니다.
PaginationInfo 에서 설정을 변경하는 부분이 있는건지요?
아니면 저희가 일일히 paginationInfo.getFirstRecordIndex() + 1 을 해주어야 하나요?
답변부탁드립니다.
egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo 을 이용하여 페이징을 구현하려고 합니다.
PaginationInfo 클래스의 시작번호(startIndex), 종료번호(endIndex) 기준은
HsqlDB, MySQL 의 LIMIT 기준으로 나와있네요.
오라클 페이징은 서브쿼리와 ROWNUM을 이용하여서 구현을 해야 하는데요.
오라클은 시작번호가 0이 아니고 1로 시작하는 걸로 알고 있습니다.
PaginationInfo 에서 설정을 변경하는 부분이 있는건지요?
아니면 저희가 일일히 paginationInfo.getFirstRecordIndex() + 1 을 해주어야 하나요?
답변부탁드립니다.
A
안녕하세요.. 이원영님..
말씀하신 것 처럼 rownum을 사용하시면 됩니다. 다만 질문하셨던 것 처럼 소스 상에 변경이 아닌 query 상에서 다음과 같이 수행하시면 됩니다.
SELECT * FROM ( SELECT rownum rn, TB.* FROM (
// 원래 query...
) TB ) WHERE rn BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
위와 같이 #firestIndex#를 + 1로 처리하시면 됩니다..
그럼.. 남은 하루도 즐거운 하루 되십시오.
감사합니다..
말씀하신 것 처럼 rownum을 사용하시면 됩니다. 다만 질문하셨던 것 처럼 소스 상에 변경이 아닌 query 상에서 다음과 같이 수행하시면 됩니다.
SELECT * FROM ( SELECT rownum rn, TB.* FROM (
// 원래 query...
) TB ) WHERE rn BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage#
위와 같이 #firestIndex#를 + 1로 처리하시면 됩니다..
그럼.. 남은 하루도 즐거운 하루 되십시오.
감사합니다..