테이블의 레코드를 랜덤하게 몇개만 뽑을때 유용하다.
EXAM 테이블에서 특정 개수만큼 레코드를 랜덤하게 가져올때

  SELECT INF.EXAMNUM
    FROM (SELECT EX.EXAMNUM                           /* 문제번호 */
                ,EX.SUBJ                              /* 과정코드 */
                ,EX.LESSON                            /* 차시 */
                ,EX.EXAMTYPE                          /* 문제분류 */
                ,EX.LEVELS                            /* 난이도 */
            FROM EXAM EX
           WHERE 1 = 1
             AND SUBJ              = #subj#
             AND TO_NUMBER(LESSON) = #lesson#
             AND EXAMTYPE          = #examtype#
             AND LEVELS            = #levels#
           ORDER BY DBMS_RANDOM.VALUE
        ) INF
   WHERE ROWNUM <= TO_NUMBER(TO_CHAR(#examcnt#))



posted by 뚱2