IT•개발 끄적/SQL
[SQL] 오라클 삽입문 반복 방법, Oracle insert LOOP FOR(PL/SQL)
소다맛사탕
2021. 5. 5. 15:30
반응형
안녕하세요. 소다맛사탕 입니다.
기본적으로 테이블을 생성하고 컬럼에 값을 집어넣고 싶은데 기본적인 INSERT문이 아닌 PL/SQL의 LOOP와 FOR문을 이용하여 값을 여러개 집어넣는 방법에 대해 알아 보겠습니다.
값을 집어 넣기에 앞서 PL/SQL의 LOOP와 FOR에 대해 알아보겠습니다.
1. LOOP문
루프를 돌며 반복해서 로직을 처리하는 반복문.
LOOP
처리문;
EXIT [WHEN 조건];
END LOOP;
---ex)
DECLARE
vn_num1 NUMBER := 2;
vn_num2 NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE (vn_num1 || '*' || vn_num2 || '='
|| vn_num1 * vn_num2);
vn_num2 := vn_num2 + 1; -- java의 vn_num2++;과 같음.
EXIT WHEN vn_num2 > 10; -- 10보다 크면 루프종료.
END LOOP;
END;
----- 결과 -----
2*1=2
2*2=4
2*3=6
2*4=8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18
2*10=20
2. FOR문
루프를 돌며 반복해고, 인덱스는 초기값에서 시작해 최종값까지 루프를 돌며 1씩 증가.
FOR 인덱스 IN [REVERSE]초기값..최종값
LOOP
처리문;
END LOOP;
---ex)
DECLARE
vn_num NUMBER := 3;
BEGIN
FOR i IN 1..9
LOOP
DBMS_OUTPUT.PUT_LINE(vn_num || '*' || i || '= ' || vn_num * i);
END LOOP;
END;
---- 결과 ----
3*1=3
3*2=6
3*3=9
3*4=12
3*5=15
3*6=18
3*7=21
3*8=24
3*9=27
; REVERSE를 명시하게 되면 순서가 거꾸로 됩니다.
DBMS_OUTPUT.PUT_LINE은 서버의 출력 내용으로 보겠다는 얘기 입니다.java의 콘솔창과 같습니다.
그럼 이제 오늘의 핵심인 생성한 테이블에 PL/SQL의 LOOP문, FOR문을 사용하여
데이터를 순서대로 넣는 방법에 대한 예시를 적어보겠습니다.
테이블 데이터 insert for문
-- 생성한 테이블
CREATE TABLE TEST_EXAMPLE_TB (
seq_no NUMBER NOT NULL,
data1 VARCHAR2(100),
data2 VARCHAR2(100)
);
---- PL/SQL LOOP, FOR문 ----
DECLARE
vn_data1 VARCHAR2(100) := 'test1_';
vn_data2 VARCHAR2(100) := 'test2_';
BEGIN
FOR i IN 1..10
LOOP
INSERT INTO TEST_EXAMPLE_TB
VALUES
(i, vn_data1 || i, vn_data2 || i);
END LOOP;
COMMIT;
END;
---- 결과 ----
보시는 것과 같이 인덱스를 1~ 10까지 반복문(FOR문)이용해 처리한 결과입니다.
이처럼 DB를 이용하여 테이블의 데이터를 여러개를 넣고 싶다면 위와 같은 PL/SQL을 이용해 진행하시면 됩니다.