현재 Sybase 버전은 Adaptive Server Enterprise/12.5.3/EBF 13055 ESD#5/P/Sun_svr4/OS 5.8/ase1253/1939/64-bit/FBO/Tue Dec 6 09:13:20 2005
입니다.
회사에서 어쩔수 없이 Sybase를 사용하는 싸이트를 떠넘겨 받아 울며 겨자 먹기로 작업을 하는데 잘 되질 않습니다....ㅡ.ㅜ;
문제는 다름이 아니고 페이징 처리를 하고 결과 데이터를 보면 총 164 페이지가 있고 67 페이지까지 이동시 해당 데이터가 잘 나옵니다.
하지만 68 페이지 이후 부터는 올바른 데이터를 표시하지 못하고 있습니다.
소스상의 오류라고 보기에는 의아한게 그럼 이전 페이지들에서는 왜 문제가 발생하지 않은것인지 갑갑하기만 합니다...ㅜ.ㅜ;
아래늬 해당 쿼리를 범위를 설정하여 따로 실행하면 데이터는 보이고 있습니다.
하지만 웹상에서는 68페이지는 10건 뿌리는 중에 2건 이후 페이지는 모두 데이터를 가져오지 못하고 있습니다.
JSP 와 iBatis 로 구성 되어져 있으며 현재 사용하고 있는 쿼리는
SELECT RECOM_CD, MAKE_YMD, SEQ, ROWNUM=identity(8) INTO ##T
FROM KBAH09TB
WHERE RECOM_CD = '2043'
AND RTRIM(IPGUM_CODE) IS NULL
AND CANDI_YMDT IS NULL
ORDER BY MAKE_YMD ASC, SEQ ASC
SELECT K.MAKE_YMD, K.SEQ, K.ENG_NM, K.RESI_NO1, K.NATIONALITY_CD, N.SUB_CLASS_ENG_NM AS NATIONALITY_NM,
K.JUDG_YMD, RTRIM(K.RECOM_CD) AS RECOM_CD, K.IPGUM_CODE, K.APPL_POOM_DAN_NO, K.APPL_POOM_DAN_FG,
(CASE WHEN RTRIM(K.RESI_NO2) IS NULL OR SUBSTRING(K.RESI_NO2, 1, 1) = '1' OR SUBSTRING(K.RESI_NO2, 1, 1) = '2' THEN '19' ELSE '20' END) + K.RESI_NO1 AS RESI_NO3,
(CASE WHEN K.APPL_POOM_DAN_FG = '001' THEN 'POOM' ELSE 'DAN' END) AS APPL_POOM_DAN_FG_NM,
(CASE WHEN (SELECT COUNT(1) FROM KEAG05TB J WHERE J.RECOM_CD = K.RECOM_CD AND CONVERT(CHAR, GETDATE(), 112) BETWEEN J.START_YMD AND J.END_YMD) > 0
THEN (SELECT CASE WHEN K.APPL_POOM_DAN_FG = '001' AND K.APPL_POOM_DAN_NO = '1' THEN POOM1
WHEN K.APPL_POOM_DAN_FG = '001' AND K.APPL_POOM_DAN_NO = '2' THEN POOM2
WHEN K.APPL_POOM_DAN_FG = '001' AND K.APPL_POOM_DAN_NO = '3' THEN POOM3
WHEN K.APPL_POOM_DAN_FG = '001' AND K.APPL_POOM_DAN_NO = '4' THEN POOM4
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '1' THEN DAN1
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '2' THEN DAN2
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '3' THEN DAN3
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '4' THEN DAN4
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '5' THEN DAN5
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '6' THEN DAN6
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '7' THEN DAN7
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '8' THEN DAN8
WHEN K.APPL_POOM_DAN_FG = '002' AND K.APPL_POOM_DAN_NO = '9' THEN DAN9
ELSE 0 END
FROM KEAG05TB M
WHERE M.RECOM_CD = K.RECOM_CD
AND CONVERT(CHAR, GETDATE(), 112) BETWEEN M.START_YMD AND M.END_YMD
)
ELSE (
SELECT (CASE WHEN D.RECOM_GB = '001' THEN HYUP_DANGA ELSE DANGA END)
FROM KEAG01TB_NEW A, GDP_REGION B, KMS_USERTB_G C, KAAA04TB D
WHERE A.REGION_CD = B.REGION_CD
AND B.NATION_CD = D.NATION_CD
AND D.RECOM_CD = C.RECOM_CD
AND C.RECOM_CD = '2043'
AND A.HY_CD = '002'
AND A.POOMDAN_FG = K.APPL_POOM_DAN_FG
AND A.POOMDAN_NUM = K.APPL_POOM_DAN_NO
AND CONVERT(CHAR, GETDATE(), 112) BETWEEN A.START_YMD AND A.END_YMD
AND C.USE_YN = 'Y'
AND C.RECOM_FG = 'Y'
) END
) AS DANGA
FROM ##T T, KBAH09TB K, (SELECT SUB_CLASS_CD, SUB_CLASS_ENG_NM FROM KEAH02TB WHERE SUPER_CLASS_CD = 'D' AND MID_CLASS_CD = '29' AND SUB_CLASS_CD > '000') N
WHERE (T.RECOM_CD = K.RECOM_CD AND T.MAKE_YMD = K.MAKE_YMD AND T.SEQ = K.SEQ)
AND K.NATIONALITY_CD = N.SUB_CLASS_CD
AND T.ROWNUM BETWEEN CONVERT(INT, '1') AND CONVERT(INT, '10')
ORDER BY T.ROWNUM ASC
DROP TABLE ##T
Sybase를 이번에 처음 접하는거라 이리저리 검색을 해봐도 어떤게 맞는지 알수가 없습니다.....
많은 고수님들의 가르침 부탁 드립니다.....
|