일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 오라클
- array
- SQL
- table
- url 변환
- 배열
- React
- 원펀맨
- html
- spring
- JS
- 형변환
- 맛집
- 리액트
- Java
- 원펀맨: 최강의 남자
- 스프링
- JSTL
- set
- Oracle
- forEach
- jQuery
- 개발
- JSX
- 자바
- JavaScript
- 모바일게임
- url 치환
- 자바스크립트
- 이름 마스킹
Archives
- Today
- Total
특별한 일상
[SQL] 오라클 삽입문 반복 방법, Oracle insert LOOP FOR(PL/SQL) 본문
반응형
안녕하세요. 소다맛사탕 입니다.
기본적으로 테이블을 생성하고 컬럼에 값을 집어넣고 싶은데 기본적인 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을 이용해 진행하시면 됩니다.
'IT•개발 끄적 > SQL' 카테고리의 다른 글
[SQL] 오라클 문자열 반환 (Oracle LTRIM, RTRIM, LPAD, RPAD) (0) | 2021.05.18 |
---|---|
[SQL] 오라클 트리거 생성, 삭제(oracle trigger) (0) | 2021.05.10 |
[SQL] 오라클 비밀번호 만료(ORA-28001: the password has expired) (0) | 2021.04.29 |
[SQL] Oracle insert, update, merge ,delete 알아보기 (0) | 2021.04.23 |
[SQL] oracle 테이블 생성(CREATE TABLE), 삭제(DROP), 변경/수정(ALTER) (0) | 2021.04.18 |
Comments