티스토리 뷰
일반적으로 여러개의 데이터를 select 해와서 한번에 insert 하는 쿼리는 하단과 같다.
< 20살 이상의 학생들 데이터를 RESULT_TB에 일괄로 insert>
INSERT INTO RESULT_TB ( SEQ, NAME, AGE, GENDER ) SELECT RESULT_SEQ.NEXTVAL, NAME, AGE, GENDER FROM STUDENT_TB WHERE AGE >= 20; |
그런데, RESULT_TB2 라는 테이블이 새로 생기고, 이제는 20살 이상의 학생들을 RESULT_TB, RESULT_TB2 모두 한번에 넣어줘야 하는 상황이 생겼다.
근데, RESULT_TB 의 시퀀스를 가지고 그대로 RESULT_TB2 테이블의 RESULT_SEQ 라는 컬럼에 바로 넣어줘야 하는 상황이다.
나는 프로시저로 작성해 보고자 한다.
create or replace PROCEDURE TEST_PROC AS V_SEQ NUMBER(10,0); BEGIN DECLARE /*커서선언*/ CURSOR CS_TEST IS SELECT NAME, AGE, GENDER FROM STUDENT_TB WHERE AGE >= 20 ; BEGIN /*커서 for loop 시작*/ FOR CS_T IN CS_TEST LOOP SELECT RESULT_SEQ.NEXTVAL INTO V_SEQ FROM DUAL; /* for문 돌 동안, seq 증가시킨값 변수에 대입 */ /* 첫번째 INSERT 문 */ INSERT INTO RESULT_TB ( SEQ, NAME, AGE, GENDER ) VALUES ( V_SEQ, CS_T.NAME, CS_T.AGE, CS_T.GENDER); /* 두번째 INSERT 문 */ INSERT INTO RESULT_TB2 ( RESULT_SEQ, NAME, AGE, GENDER ) VALUES ( V_SEQ, CS_T.NAME, CS_T.AGE, CS_T.GENDER); END LOOP; END; COMMIT; END TEST_PROC; |
'Oracle' 카테고리의 다른 글
여러 row로 나오는 데이터 값을 하나의 row로 표현 (0) | 2020.11.25 |
---|---|
오라클 문자열 합치기 (0) | 2019.04.11 |
ORDER BY DECODE (0) | 2017.11.09 |
오라클 nclob 형 데이터 뿌려주기 두번째 방법 (0) | 2017.03.08 |
ORA-01861 에러 (HTTP 400 에러 Bad Request) (0) | 2017.02.06 |
댓글