10G 이전 버전에서는 뷰나 테이블로
10G 이후 버전 DUAL 테이블과 CONNECT BY LEVEL 사용하여
추가적인 I/O 없이 임의 데이터 생성.
임의의 숫자 만들기 |
---|
{code:sql} 1 ~ 10 가지 추출하는 SQL |
-- 테스트 시작
SQL> select * from v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> SELECT LEVEL AS NUM_ROW
2 FROM DUAL
3 CONNECT BY LEVEL < 11;
NUM_ROW
|
||임의의 날짜 만들기||
|{code:sql}
CONNECT BY LEVEL 이 없었다면, 날짜가 저장된 별도의 테이블을 및
딕션어리 뷰 등을 사용하여 조회함
따라서 발생되는 I/O가 발생함
아래와 같은 방법으로 날짜 관련 추출된 SQL 생성시
추가적인I/O는 발생하지않는다.
SQL> SELECT TO_CHAR(TO_DATE('20111201','YYYYMMDD') +LEVEL-1,'YYYYYMMDD') AS "DATE"
2 FROM DUAL
3 CONNECT BY LEVEL <= LAST_DAY(TO_DATE('20111201','YYYYMMDD'))
4 -TO_DATE('20111201','YYYYMMDD')+1;
DATE
---------
201111201
201111202
201111203
201111204
201111205
201111206
201111207
201111208
201111209
201111210
201111211
DATE
---------
201111212
201111213
201111214
201111215
201111216
201111217
201111218
201111219
201111220
201111221
201111222
DATE
---------
201111223
201111224
201111225
201111226
201111227
201111228
201111229
201111230
201111231
|