rownum 출력 시 0 값이 출력될수도 있나요? 0 4 2,330

by 제로 [SQL Query] [2017.04.25 11:13:05]


아래와 같은 쿼리를 수행하면 rownum 값이 0부터 출력이 됩니다.

힌트절을 제외하거나 order by절을 제외하면 rownum은 1부터 출력되네요~

혹시 동일한 경험이나 아시는분 있으시면 고견 부탁드립니다.

SELECT /*+ GATHER_PLAN_STATISTICS */ RID, RDATE
   , ROWNUM RN
FROM (SELECT /*+ INDEX_DESC(M IE1_TAB_PART) */ ROWID RID, RDATE
    FROM TAB_PART M
    WHERE GRP_ID = 'NOP01'
    AND RDATE  <= SYSDATE
    ORDER BY RDATE DESC
   ) A
WHERE ROWNUM <= 50;

 

by chrome [2017.04.25 11:26:31]

ROWNUM 0 은 직접 만나본적은 없고,

책을 통해

ROWNUM 0 이 나올 수 있기 때문에 ROWNUM= 1 으로 하면 문제가 될 수 있어

ROWNUM <= 1 해야한다는 내용을 본적이 있죠. 책에도 원인은 없었습니다만,

오라클 버전에 따른 버그가 아닐까 싶습니다. 

 

 

 


by 제로 [2017.04.25 13:28:34]

아~ 우선, 답변 감사합니다.

rownum 0 이 나온다면 어떠한 상황?에서 발생하는지가 궁금하네요~

페이징 처리를 위해 rownum을 사용하려 했는데 조건절에  CEIL(RN/50) = :b1 하게 되면 row가 49건 출력되더라구요~

그래서 우선 rownum 대신 row_number 으로 대체하긴 했습니다만.... 이 현상이 왜 발생하는지 모르겠어요~


by 마농 [2017.04.25 14:21:13]

rownum 의 정의상 0 이 나올 수 없구요.
정말로 0 이 나왔다면?
단지 버그일뿐. 원인 규명까지 할 필요가 있을까요?


by 제로 [2017.04.25 14:56:46]

아~ 답변감사합니다.

해당 현상이 파티션 테이블에서 발생하였는데요~

파티션 테이블에서만 발생하는 버그?인건지해서요~

말씀하신것과 같이 굳이 원인 규명까지는 필요없을것 같습니다.^^; 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입