개요
통계 개발 초기에 Oracle Table에 data가 없을 경우 랜덤값을 넣어 Test를 진행하기 위한 PL/SQL 입니다.
100분 동안의 데이터 넣기
begin
for i in 1 .. 100
loop
insert into s_scpi values
(
TO_CHAR(sysdate+1/(24*60)*i, 'yyyymm'), -- s_yyyymm varchar2(6)
TO_CHAR(sysdate+1/(24*60)*i, 'dd'), -- s_dd varchar2(2)
TO_CHAR(sysdate+1/(24*60)*i, 'HH24'), -- s_hh varchar2(2)
TO_CHAR(sysdate+1/(24*60)*i, 'MI'), -- s_mi varchar2(2)
'smsg1a', -- system_name varchar2(16)
'test_'||dbms_random.string('L', 1), -- scpi_name varchar2(16)
rpad(ABS(dbms_random.random),1), -- entity_id number(7)
rpad(ABS(dbms_random.random),4), -- scp_request number(7)
rpad(ABS(dbms_random.random),4), -- scp_request_rsp number(7)
rpad(ABS(dbms_random.random),4), -- scp_request_succ number(7)
rpad(ABS(dbms_random.random),4), -- scp_request_fail number(7)
rpad(ABS(dbms_random.random),4), -- scp_cancel number(7)
rpad(ABS(dbms_random.random),4), -- scp_cancel_rsp number(7)
rpad(ABS(dbms_random.random),4), -- scp_cancel_succ number(7)
rpad(ABS(dbms_random.random),4) -- scp_cancel_fail number(7)
);
end loop;
commit;
end;
/
부가설명
sysdate
- sysdate : 현재
- sysdate + 1 : 1일 후
- sysdate + 1/24 : 1시간 후
- sysdate + 1/(24*60) : 1분 후
TO_CHAR() : 숫자나 날짜형을 문자형으로 변환
- 9 : 일반적인 숫자를 나타냄
- 0 : 앞의 빈자리를 0으로 채움
- $ : dollar를 표시함
- L : 지역 통화 단위(ex )
- . : 소숫점을 표시함
- , : 천단위를 표시함
- SCC : 세기를 표시 S는 기원전(BC)
- YEAR : 연도를 알파벳으로 spelling
- YYYY : 4자리 연도로 표시
- YY : 끝의 2자리 연도로 표시
- MONTH : 월을 알파벳으로 spelling
- MON : 월의 알파벳 약어
- MM : 월을 2자리 숫자로 표시
- DAY : 일에 해당하는 요일
- DY : 일에 해당하는 요일의 약어
- DDD,DD,D : 연도,월,일 중의 날짜를 숫자로 표시
- HH , HH24 : (1-12) , (0-23)중의 시간을 표시
- MI : 분을 표시
- SS : 초를 표시
- AM(A.M.),PM(P.M.) : 오전인지 오후인지를 표시
DBMS_RANDOM.STRING(opt IN CHAR, len IN NUMBER)
- 랜덤한 문자열 생성(문자열의 구성은 첫번째 인수값으로 지정.)
- 리턴값 : VARCHAR2
- 첫번째 인수값
- U : 대문자
- L : 소문자
- A : 대소문자 혼합
- X : 대문자 + 숫자
- P : 출력가능한 문자로만
- 두번째 인수값 : 문자열길이 지정
- DBMS_RANDOM package는 Oracle8 부터 지원합니다.
DBMS_RANDOM.RANDOM
- -9999999999 ~ 9999999999 리턴
- 리턴값 : BINARY_INTEGER
ABS( n )
- n의 절대값을 반환


