<INSERT ~ SELECT 문>
INSERT INTO TRACK_MAS (CURR_YEAR, BS_POINT, BE_POINT, KS_POINT, KE_POINT, DS_POINT, DE_POINT
, DUPL_RATE, UDATE, UUSER)
-- 아래 SELECT구문을 INSERT하겠다
SELECT '2021' AS CURR_YEAR -- 하드코딩 값
, BS_POINT
, BE_POINT
, KS_POINT
, KE_POINT
, DS_POINT
, DE_POINT
, DUPL_RATE
, SYSDATE AS UDATE
, 'se.shin' AS UUSER
FROM TRACK_MAS
WHERE CURR_YEAR = '2020' -- 2020년도 데이터를 검색, CURR_YEAR를 2021로 변경해서 INSERT 하겠다.
...
작업을 하다가 다음 같은 상황이 생겼다.
'이전연도 데이터 복사하기'
사용자 입장에선 참 사용하기 편한 기능이다.
<로직>
1. CHECK : 작성중인 내용이 있으면 경고창 띄운후 YES / NO 선택
- 작성중인 내용이란? 현재 화면에 입력한 값이 있으면 작성중
2. DELETE : 복사하기 버튼을 누르면 현재 화면의 조건(ex_연도, 코드) 을 파라미터로 넘겨서 현재 저장된 값 전체 DELETE (*주의)
- myBatis
<delete id="delTrackMas" parameterType="com.test.copyTrack.vo.CopyTrackVO">
DELETE
FROM TRACK_MAS
WHERE CURR_YEAR = '${currYear}'
</delete>
3. INSERT : 선택한 전년도 데이터${copyYear}를 SELECT문으로 만들어서 -> 현재년도에 INSERT
- myBatis : ${} 파라미터 값을 넘겨 사용가능!
<insert id="insTrackMas" parameterType="com.test.copyTrack.vo.CopyTrackVO" >
INSERT INTO TRACK_MAS
(CURR_YEAR, BS_POINT, BE_POINT, KS_POINT, KE_POINT, DS_POINT, DE_POINT, DUPL_RATE, UDATE, UUSER)
SELECT '${currYear}' AS CURR_YEAR
, BS_POINT
, BE_POINT
, KS_POINT
, KE_POINT
, DS_POINT
, DE_POINT
, DUPL_RATE
, SYSDATE AS UDATE
, '${uUser}' AS UUSER
FROM TRACK_MAS
WHERE CURR_YEAR = '${copyYear}'
</insert>
4. SELECT : 복사로직에서(ex_ajax) 미리 만들었던 화면 조회 하는 로직을 타게해서 화면이 전체 리로드 되며 복사한 내용이 세팅되게 작업
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] DELETE (0) | 2021.06.04 |
---|---|
[ORACLE] CASE 함수 / CASE WHEN (0) | 2021.06.04 |
[Oracle] 중복 데이터 찾기 / 중복 데이터 개수 찾기 GROUP BY / HAVING / COUNT (0) | 2021.03.05 |
[Oracle] 조회한 가상 컬럼의 연산 (0) | 2021.02.10 |
[Oracle] UNION, UNION ALL, 집합 연산 (0) | 2021.01.13 |