대용량 테이블 암복호화 테스트 해보고 싶음. 그럴려면 주민번호를 100만개정도 생성해야함.
주민번호를 자동으로 생성하는 sql 스크립트를 만들러 기초부터 gogo
구구단 3단 쿼리문을 실행 후 출력 해보고 싶으면 2가지 방법이 있다.
1) SET SERVEROUTPUT ON
2) 왼쪽 상단의 연두색 ‘+’ 기호 클릭
출력결과
PL/SQL 기초 지식은 아래 참조
반복문
반복문에는 LOOP문. WHILE문, FOR문이 있다. 각각의 반복문을 이용하여 구구단 3단 출력 해보자.
- LOOP문
LOOP 처리문; EXIT [WHEN 조건]; END LOOP; |
“EXIT WHEN 조건”을 사용해 WHEN절에서 명시한 조건에 맞을 때 빠져 나가라고 명시할 수 있다.
declare a number := 3; b number := 1; begin loop dbms_output.put_line(a*b); b:=b+1; exit when b>9; end loop; end; |
WHILE문
While 조건 Loop 처리문; End loop; |
declare a number := 3; b number := 1; begin while b<=9 loop dbms_output.put_line(a*b); b:=b+1; end loop; end; |
FOR문
FOR 인덱스 IN [REVERSE]초깃값..최종값 LOOP 처리문; END LOOP; |
REVERSE를 명시하면 순서가 거꾸로 된다.
구구단 3단을 출력하는 익명 블록을 FOR문으로 변경
declare vn_base_num number :=3; begin for i in 1..9 loop dbms_output.put_line (vn_base_num*i); end loop; end; |
하지만!!!!!! 내 목표는 대용량 데이터(주민번호)를 삽입하는 SQL문을 만드는 것이다!!!!!!!!!!!!!
위에서 배운 지식들을 짬뽕해서…… 사용하면…
1단계 : 주민번호 앞 6자리 출력해보기 (DBMS_RANDOM.VALUE라는 내장함수 이용)
declare --주민번호 앞 6자리 저장할 변수 num number(6); begin --10번 반복 for i in 1..10 loop --num에 111111 ~ 999999 랜덤 숫자 저장 NUM := DBMS_RANDOM.VALUE(111111, 999999); --num출력 dbms_output.put_line(num); end loop; end; |
출력결과 :
2단계 : 주민번호 뒷자리 7자리 출력하기 (to_char이라는 내장 함수 이용)
declare --주민번호 앞 6자리 저장할 변수 num number(6); --주민번호 뒷 첫번째 자리 남:1,3 여:2,4 sex number(1); --전체주민번호 문자열로 선언 jumin varchar2(14); begin for i in 1..10 loop --num에 111111 ~ 999999 랜덤 숫자 저장 NUM := DBMS_RANDOM.VALUE(111111, 999999); sex := DBMS_RANDOM.VALUE(1,4); --전체 주민번호: 주민번호 앞 6자리 + 성별+주민번호 앞 6자리 jumin := to_char(num||'-'||sex||num); --주민번호 14자리 출력 dbms_output.put_line(jumin); end loop; end; |
출력결과:
3단계 : 주민번호 실제 테이블에 insert 하기
먼저 TABLE 생성
CREATE TABLE TB_SAMPLE01( JUMIN VARCHAR(50)); |
TB_SAMPLE01에 JUMIN 컬럼 추가
declare num number(6); sex number(1); jumin varchar2(14); begin for i in 1..10 loop NUM := DBMS_RANDOM.VALUE(111111, 999999); sex := DBMS_RANDOM.VALUE(1,4); jumin := to_char(num||'-'||sex||num); --TB_SAMPLE01에 JUMIN 컬럼 추가 INSERT INTO TB_SAMPLE01 VALUES(JUMIN); end loop; end; |
출력결과:
우선 이렇게 랜덤으로 생성된 주민번호는 실제 주민번호는 아니고 엉터리 주민번호이다. 예를 들어 왜냐하면 달은 1월에서 12까지밖에 없고 이런 조건들을 집어넣어주지 않았기 때문이다.
나중에는 실제 주민번호를 만드는 프로시저를.... 만들어 보기로하자...
- 끝 -
오라클 SQL과 PL/SQL을 다루는 기술 보면서 공부 참고했음
'DATABASE > DB study' 카테고리의 다른 글
Oracle SQL Developer(SQL EXPORT, ERD, letters Breaks Solved) (0) | 2020.05.21 |
---|---|
Database Object (check, view, index, synonym, sequence) (0) | 2020.04.17 |
Database package (0) | 2020.03.16 |
merge, insert, alter, delete (0) | 2020.03.12 |
BLOB data create & Encryption/Decryption (0) | 2020.01.17 |
댓글