sybase 는 rownum 등을 제공하지 않아~ 페이징 처리가 까다롭다.
전에 프로젝트에서 사용하던 방법인데 스토어 프로시져를 만들고
페이징을 위한 파라메터를 넘겨주어 값을 받아오는 형태인다.
일단 임시테이블에 모든 값을 부어넣고 조인을 걸어 원하는 페이징 열만 가져오기 때문에
그닥 좋은 방법처럼 보이지는 않을 수도 있으나 더 좋은 방법이 떠오르지 않음...^^
예)
create proc 페이징( -- 프로시져 생성
@Page_No int = NULL, -- 페이지 번호 변수
@List_Rows int = NULL, -- 뽑아올 열 갯수 변수
)
as
declare @Last_Row decimal(10,0),
@First_Row decimal(10,0)
create table #임시테이블 ( -- 임시 테이블 생성
Count_No numeric(10,0) identity not null primary key, -- 번호 생성(자동증가)
키값 -- 셀렉트 한 결과 집합의 키 컬럼
)
insert #임시테이블(키값)
select 키값
from 테이블
where 조건.........
select @Last_Row = @Page_No * @List_Rows
select @First_Row = @Last_Row - @List_Rows + 1
select 컬럼1, 컬럼2 .....
from 테이블 AS A,
임시테이블 AS B
where 조건....
and A.키값 = B.키값
and B.Count_No between @First_Row and @Last_Row
'DataBase > SQL' 카테고리의 다른 글
Access(*.MDB) 비교 쿼리 (오라클의 Decode, Swich Case문 처럼 사용하기) (0) | 2010.06.29 |
---|---|
오라클- 크로스 탭(cross tab) 쿼리 흉내내기.. (0) | 2009.09.01 |
오라클- 랭크함수 RANK() (0) | 2008.07.24 |
날짜와 날짜 사이의 날 모두 구하기 (0) | 2008.07.24 |
한글 자음(초성) 으로 시작하는 문자열 검색하기. (0) | 2008.07.24 |