๋งค์ ์ ํ ์ ์ฅ
INSERT INTO C1(
MALL_CODE, /*๋งค์ฅ*/
DATE, /*์ผ์*/
STO_CODE, /*์ ํฌ*/
SLIP_NUM, /*์ ํ๋ฒํธ(์ผ๋ณ)*/
SEQ_NUM, /*์ ํ๋ฒํธ ๊ฐ์ ์ ๊ตฌ๋ถํ๋ ๋ฒํธ*/
QUANTITY, /*์๋*/
PRICE, /*๊ฐ๊ฒฉ*/
DETAIL /*์์ธ์ ๋ณด*/
) VALUES(
#{mallCode},
#{date},
#{stoCode},
NVL((SELECT MAX(SLIP_NUM) + 1 /*SLIP_NUM*/
FROM C0
WHERE MALL_CODE = #{mallCode}
AND STO_CODE = #{stoCode}
AND DATE = #{date}), 0),
NVL((SELECT MAX(SEQ_NUM) + 1 /*SEQ_NUM*/
FROM C1
WHERE MALL_CODE = #{mallCode}
AND STO_CODE = #{stoCode}
AND SLIP_NUM = NVL((SELECT MAX(SLIP_NUM) + 1
FROM C0
WHERE MALL_CODE = #{mallCode}
AND STO_CODE = #{stoCode}
AND DATE = #{date}), 0)
AND DATE = #{date}), 0),
#{quantity},
#{price, jdbcType=INTEGER},
#{detail, jdbcType=VARCHAR}
)
NVL("๊ฐ", "์ง์ ๊ฐ")
→ NVL ํจ์๋ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ ์ง์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , NULL์ด ์๋๋ฉด ์๋ ๊ฐ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
์ฌ๊ธฐ์ ์ ํ๋ฒํธ๋ ์ผ๋ณ๋ก ๋งค๊ฒจ์ง๊ณ , ์ํ์ค ๋๋ฒ๋ ๊ฐ์ ์ ํ๋ฒํธ ์์์ ๋งค๊ฒจ์ง๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์, ์ ํ์ ์ฅํ ์, ๊ฐ์ ์ผ์์ ์ ํ๊ฐ ์์ ์ ์ ํ๋ฒํธ๋ฅผ 0์ผ๋ก ์๋ก ๋ง๋ค์ด์ฃผ๊ณ , ์ ํ๊ฐ ์์ ์์๋ ์ด์ ์ ํ๋ฒํธ์ 1์ ๋ํด์ฃผ๋๋ก ์์ฑํด์ผ ํ๊ณ , ์ํ์ค ๋๋ฒ๋ ๊ฐ์ ์ ํ๋ฒํธ๊ฐ ์์ ์์ 0์ผ๋ก ์๋ก ๋ง๋ค์ด์ฃผ๊ณ , ์์ ์์ ์ด์ ์ํ์ค ๋๋ฒ์ 1์ ๋ํด์ฃผ๋๋ก ์์ฑํด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ ํ๋ฒํธ๋ฅผ ๋ฃ์ด์ฃผ๋ ์ชฝ์์
NVL((SELECT MAX(SLIP_NUM) + 1 /*SLIP_NUM*/
FROM C0 /*slip num์ด ์๋ ํ
์ด๋ธ*/
WHERE MALL_CODE = #{mallCode} /*๋งค์ฅ*/
AND STO_CODE = #{stoCode} /*์ ํฌ*/
AND DATE = #{date}), 0), /*์ผ์*/
์ด๋ ๊ฒ ์ ํ๋ฒํธ๊ฐ ๋ค์ด์๋ ํ ์ด๋ธ์์ ๋งค์ฅ, ์ ํฌ, ์ผ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ด์ ์ ํฌ๋ฒํธ์ 1์ ๋ํด์ฃผ๊ณ , ์์ ์์(NULL์ด ๋ฆฌํด๋๋ฉด) 0์ด ๋๋๋ก NVLํจ์๋ฅผ ์จ ์์ฑํ๋ค.
์ํ์ค ๋๋ฒ๋ฅผ ๋ฃ์ด์ฃผ๋ ์ชฝ์์๋
NVL((SELECT MAX(SEQ_NUM) + 1 /*SEQ_NUM*/
FROM C1 /*seq num์ด ์๋ ํ
์ด๋ธ*/
WHERE MALL_CODE = #{mallCode} /*๋งค์ฅ*/
AND STO_CODE = #{stoCode} /*์ ํฌ*/
AND SLIP_NUM = NVL((SELECT MAX(SLIP_NUM) + 1 /*slip num์ด ๋ค์๊ณผ ๊ฐ์์์(์กฐ๊ฑด)*/
FROM C0 /*slip num์ด ์๋ ํ
์ด๋ธ*/
WHERE MALL_CODE = #{mallCode} /*๋งค์ฅ*/
AND STO_CODE = #{stoCode} /*์ ํฌ*/
AND DATE = #{date}), 0) /*์ผ์*/
AND DATE = #{date}), 0), /*์ผ์*/
์์์ ์์ฑํ๋ ๊ฒ์ฒ๋ผ ์ ํ๋ฒํธ๋ฅผ ๊ตฌํ ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํด where์ ์์ ํด๋น slip num์ ๊ฐ๋ค๋ฉด 1์ ๋ํด์ฃผ๋๋ก ํ๊ณ , ์๋ค๋ฉด 0์ ๋ฐํํ๋๋ก ์์ฑํ๋ค.
#{price, jdbcType = INTEGER},
#{detail, jdbcType = VARCHAR}
์ฟผ๋ฆฌ์ ๋งจ ๋์ ์ด๋ฐ ์์ผ๋ก ์์ฑํ๋ค.
insert, update ์ ๋ณ์์ ๊ฐ์ด ์์ ์, ๋ถ์ ํฉํ ์ด ์ ํ ('ํด๋น ๋ณ์=null') ์๋ฌ๊ฐ ๋ฐ์ํ๋ฏ๋ก, ์ ์ฝ์กฐ๊ฑด์ ์ํด null ๊ฐ์ ํ์ฉํ๊ณ ์๋ ์ปฌ๋ผ์ null ์ด ๋์ด์ฌ๋, jdbcType์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋ค. #{Parameter, jdbcType=INTEGER} ์ ๊ฐ์ ํํ๋ก ์ ์ธํด์ค์ผ ํ๋ค. ๋ค์๋ ๋ฌด์กฐ๊ฑด ๋๋ฌธ์์ฌ์ผ ํ๋ค.
'๐ Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ข ๋ฅ (2) | 2024.08.27 |
|---|---|
| [Oracle] UNION ํ์ฉํด ๋งค์ถ, ๋งค์ SQL ์์ฑ (1) | 2024.08.27 |
| [Oracle] ์ด๋ฏธ์ง ์ ๋ก๋, ์์ , ์ญ์ ์ฟผ๋ฆฌ ์์ฑํ๊ธฐ(+์ด๋ฏธ์ง ํ ์ด๋ธ ์์ฑ) (0) | 2024.08.20 |
| [Oracle] ๋งค์ถ ์กฐํ ์ฟผ๋ฆฌ ์์ฑํ๊ธฐ (0) | 2024.08.20 |
| [Tomcat] ํฐ์บฃ ํ์ผ ์ ๋ก๋ ๋ฐฉ์ (request, docbase) (0) | 2024.08.19 |