SQL ์ธ์ ์ ์ ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด์์ ๊ฐ์ฅ ์ง์์ ์ด๊ณ ํ๊ดด์ ์ธ ์ทจ์ฝ์ ์ค ํ๋ ์ด๋ฉฐ, COBOL-DB2 ํ๊ฒฝ๋ ์์ธ๋ ์๋๋๋ค. COBOL-DB2 ์์คํ ์ ์์ ์ฑ์ด ๋๋ค๋ ํํ์๋ ๋ถ๊ตฌํ๊ณ , ์์ญ ๋ ์ ์ ์ต์ ๋ณด์ ๊ดํ์ ๋ํ ์ธ์์ด ๋ถ์กฑํ ์ํ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋์ SQL ๊ตฌ๋ฌธ, ์๋ ๋ฌธ์์ด ์ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ ์ ๋ ฅ ์ฒ๋ฆฌ ๊ธฐ๋ฒ์ด ์ฌ์ ํ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ด ๊ณต๊ฒฉ์๊ฐ ์ด๋ฌํ ์์คํ ์ ์ ์ฉํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
COBOL-DB2๋ฅผ ์คํํ๋ ๋ฉ์ธํ๋ ์์ ์ํ, ๋ณดํ, ์ ๋ถ ์๋น์ค์ ๊ฐ์ ์ค์ ์ฐ์ ์ ์ง์ํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ์์คํ ์ ๋ฏผ๊ฐํ ๊ณ ๊ฐ ๋ฐ์ดํฐ, ๊ธ์ต ๊ฑฐ๋ ๋ฐ ๊ธฐ๋ฐ ๊ธฐ๋ก์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. SQL ์ธ์ ์ ๊ณต๊ฒฉ์ด ์ฑ๊ณตํ๋ฉด ๊ฐ์ธ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๊ฑฐ๋, ๋ฌด๋จ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๊ฑฐ๋, ํ์์ ์ธ ๋น์ฆ๋์ค ์ด์์ด ์ค๋จ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํ์ ์ค๋๋๊ณ ๋ณต์กํ ์ฝ๋๋ฒ ์ด์ค ๋ก ์ธํด ๋์ฑ ์ปค์ง๋๋ฐ , ๋ฌธ์ํ๋์ง ์์ ๋ ๊ฑฐ์ ๋ก์ง๊ณผ ํ๋์ฝ๋ฉ๋ ๋จ์ถ ๊ตฌ๋ฌธ์ด ์ถ๊ฐ์ ์ธ ์ทจ์ฝ์ ์ ๋ง๋ค์ด๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
COBOL-DB2์์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ํด๊ฒฐํ๋ ค๋ฉด ํด๋น ์ธ์ด์ ๊ตฌ๋ฌธ, DB2์ ๋ด์ฅ๋ SQL ๊ธฐ๋ฅ, ๊ทธ๋ฆฌ๊ณ ์์ ํ์ง ์์ ์ฝ๋๋ก ์ด์ด์ง ์ ์๋ ์ผ๋ฐ์ ์ธ ํจํด์ ๋ํ ๊น์ด ์๋ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ ์ฌ์ฉ, ์ ๋ ฅ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ ์ , ์ต์ ๊ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์์น ์ค์์ ๊ฐ์ ์์ ํ ๊ฐ๋ฐ ๊ดํ์ ์ด๋ฌํ ์ํ์ ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํจ๊ณผ์ ์ธ ํ์ง๋ ์ฒ ์ ํ ์ฝ๋ ๊ฒํ , ์ ๋ฌธ์ ์ธ ์ ์ ๋ถ์ , ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ด ์ ์ฉ๋๊ธฐ ์ ์ ์๋ณํ๊ณ ์์ ํ๊ธฐ ์ํ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์๋ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ๊ดํ์ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐํ์ ๊ฐ์ฅ ์ค๋๋๊ณ ์ค์ํ COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ ์์ค์ ๊ฐํํ ์ ์์ต๋๋ค.
COBOL-DB2์์์ SQL ์ฃผ์ ์๊ฐ
๋ฉ์ธํ๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํํ ๊ฒฌ๊ณ ํ๊ณ ์ฑ์ํ ์์คํ ์ผ๋ก ์ฌ๊ฒจ์ง๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ค์ํ ํ๋ซํผ์กฐ์ฐจ๋ ์ฌ๊ฐํ ๋ณด์ ํ์ ์ ์๊ณ ์์ ์ ์์ผ๋ฉฐ, ํนํ SQL ์ธ์ ์ ์ทจ์ฝ์ ๊ณผ ๊ด๋ จํ์ฌ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ํ์์ ์ธ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๊ตฌ๋ํ๋ COBOL-DB2 ํ๋ก๊ทธ๋จ์ ๋์ SQL ๋ฐ ์๋ ์ ๋ ฅ ์ฒ๋ฆฌ ๊ธฐ๋ฒ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ๊ณต๊ฒฉ์ ๋๋ผ์ธ ์ ๋๋ก ์ทจ์ฝํฉ๋๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ด ์ํ์ ์ฒํ ์ด์ ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ธ ๋ณดํธ๋ฅผ ์ํ ์ฒซ๊ฑธ์์ ๋๋ค.
COBOL-DB2 ํ๋ก๊ทธ๋จ์ ์ทจ์ฝํ๊ฒ ๋ง๋๋ ์์ธ์ ๋ฌด์์ ๋๊น?
COBOL-DB2 ํ๋ก๊ทธ๋จ์ ์์ญ ๋ ์ ์ ์์ฑ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฐฉ๋ํ ์์ ๋น์ฆ๋์ค ํฌ๋ฆฌํฐ์ปฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ง๋ ๋ช ๋ ๊ฐ ์ ์ง ๊ด๋ฆฌ ์์ ์ผ๋ก ์ธํด ์ต์ ๋ณด์ ํ์ค์ ๋ฌด์ํ๋ ์ง๋ฆ๊ธธ๊ณผ ์ฐํ์ฑ ์ด ์๊ฒจ๋ฌ์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ ์ค ํ๋๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ์ ํ ์ ์ ๊ณผ์ ์์ด SQL ๋ฌธ์์ด์ ์ง์ ์ฐ๊ฒฐํ๋ ๋์ SQL ์์ฑ์ ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ ์ฐ์ฑ์ ๋์ด์ง๋ง, ์ธ์ ์ ๊ณต๊ฒฉ์ ์ํ์ ์ด๋ํฉ๋๋ค.
์ :
MOVE 'SELECT * FROM CUSTOMERS WHERE NAME = ''' TO SQL-STRING.
STRING USER-NAME DELIMITED BY SIZE INTO SQL-STRING.
์ด ์ฝ๋์์๋ ์ฌ์ฉ์ ์
๋ ฅ์ด SQL ๋ช
๋ น์ ๋งน๋ชฉ์ ์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค. ๊ณต๊ฒฉ์๊ฐ ' OR '1'='1๊ฒฐ๊ณผ ์ฟผ๋ฆฌ๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค. ์ต์ํ์ ์
๋ ฅ ๊ฒ์ฆ๊ณผ ํธ์คํธ ๋ณ์์ ์ผ๊ด์ฑ ์๋ ์ฌ์ฉ์ผ๋ก ์ธํด ์ด๋ฌํ ํจํด์ ์ด๋ฌํ ์์คํ
์ ๊ณต๊ฒฉํ๊ธฐ ์ฌ์ด ๊ณต๊ฒฉ ๋์์ผ๋ก ๋ง๋ญ๋๋ค. COBOL-DB2 ํ๋ก๊ทธ๋จ์ ์ ๋ขฐํ ์ ์๋ ํ๊ฒฝ์์ ์คํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ์
์์ ์ธ ์
๋ ฅ์ ์์ํ์ง ๋ชปํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ํ์ ๋์ฑ ์ฆ๊ฐ์ํต๋๋ค.
๋ฉ์ธํ๋ ์ ํ๊ฒฝ์์์ SQL ์ฃผ์ ์ํ
๋ฉ์ธํ๋ ์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ด ๋ฉ์ธํ๋ ์์ ๋ฏธ์น๋ ์ ์ฌ์ ์ํฅ์ ํนํ ์ฌ๊ฐํฉ๋๋ค. ๋ฉ์ธํ๋ ์์ ๊ธ์ต, ์๋ฃ, ์ ๋ถ์ ๊ฐ์ ์ค์ ์ฐ์ ์ ์ง์ํ๋๋ฐ, ์ด๋ฌํ ์ฐ์ ์์๋ ์นจํด ์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด ์๋ฐฑ๋ง ๊ฑด์ ๊ธฐ๋ก์ด ๋ ธ์ถ๋๊ณ , ํ์ ์๋น์ค๊ฐ ์ค๋จ๋๊ฑฐ๋, ๊ท์ ์ค์๊ฐ ์ํ๋ฐ์ ์ ์์ต๋๋ค. SQL ์ธ์ ์ ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ๊ณต๊ฒฉ์๋ ๋ฌด๋จ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ณ , ์ฌ์ง์ด ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ ๋๋ ์ญ์ ํ ์๋ ์์ต๋๋ค.
๋์ฑ์ด COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ์์คํ ์์ ๋ณผ ์ ์๋ ํ๋์ ์ธ ๋ณด์ ๊ณ์ธต์ด ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ณด์ ํจ์น๋ ๋๋ฌผ๊ฒ ์ ๊ณต๋๊ฑฐ๋ ์ ์ฉํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ ๊ฑฐ์ ์์คํ ๊ณผ์ ๊ธด๋ฐํ ํตํฉ ์ผ๋ก ์ธํด ์ํ์ด ํ์ฐ๋ ์ ์์ต๋๋ค. ๋จ ํ๋์ ์ทจ์ฝ์ ๋ง ์ ์ฉ๋๋๋ผ๋ ์กฐ์ง ๋คํธ์ํฌ ๋ด์์ ์ธก๋ฉด ์ด๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ๋ฉ์ธํ๋ ์ ํ๊ฒฝ์์์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ๋ ธํํ๋๊ณ ๋ณต์กํ ์์คํ ํน์ฑ๊ณผ ๋น์ฆ๋์ค ์ฐ์์ฑ์ ๋ํ ์ค์์ฑ์ ์ดํดํ๋ ๊ณต๊ฒฉ์๋ค์๊ฒ ๋งค์ฐ ๋งค๋ ฅ์ ์ธ ๊ณต๊ฒฉ ๋์์ด ๋ฉ๋๋ค.
COBOL-DB2์ ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ ๋ฒกํฐ(๋์ SQL, ์ฌ์ฉ์ ์ ๋ ฅ, ๋ ๊ฑฐ์ ์ธํฐํ์ด์ค)
COBOL-DB2 ํ๊ฒฝ์์ SQL ์ฃผ์
๊ณต๊ฒฉ์ ์ข
์ข
์์ธก ๊ฐ๋ฅํ ๋์ SQL ์์ฑ ํจํด์ ์
์ฉํฉ๋๋ค. EXEC SQL ์ฌ์ฉ์ ์ ๊ณต ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ช
๋ น๋ฌธ์ ์๊ฒฉํ ์
๋ ฅ ๊ฒ์ฆ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ํนํ ์ทจ์ฝํฉ๋๋ค. ์๋ฅผ ๋ค์ด, COBOL์ ๋์ SQL์ ์ฌ์ฉ์ ์
๋ ฅ์์ ์กฐํฉ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
EXEC SQL
PREPARE DYNAMIC-STMT FROM :SQL-STRING
END-EXEC.
EXEC SQL
EXECUTE DYNAMIC-STMT
END-EXEC.
์ ์ ํ ์ด๊ท ์ด ์์ผ๋ฉด ๊ณต๊ฒฉ์๊ฐ ์กฐ์ํ ์ ์์ต๋๋ค. SQL-STRING ์
์ฑ ๋ช
๋ น์ ์ฝ์
ํฉ๋๋ค. ๋ ๊ฑฐ์ ์ธํฐํ์ด์ค๋ ๋ฌธ์ ๋ฅผ ์
ํ์ํต๋๋ค. ์ค๋๋ ์ผ๊ด ์์
๊ณผ ํฐ๋ฏธ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ ์
๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ์ฌ ์์ ํ์ ํ
์คํธ๊ฐ ์ค์ํ SQL ๋ฌธ์ ๊ฒ์ฌ๋์ง ์์ ์ํ๋ก ๋๋ฌํ ์ ์์ต๋๋ค. ์ต์ ํ๋ฐํธ์๋์ COBOL-DB2 ๋ฐฑ์๋๋ฅผ ์ฐ๊ฒฐํ๋ ์น ์๋น์ค๋ ๋ฏธ๋ค์จ์ด๋ ๋ ๊ฑฐ์ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ง ์์ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณต๊ฒฉ ๋ฒกํฐ๋ ์์คํ ์ด ๋ด๋ถ ์ฌ์ฉ์๋ ์๋ํ๋ ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์๋ํ ๊ฒ์ด๋ผ๋ ๊ฐ์ ํ์ ์ ๋ ฅ๊ฐ์ ๋ํ ์ ๋ขฐ๋ฅผ ์ ์ฉํฉ๋๋ค. ๊ณต๊ฒฉ์๋ ์ด๋ฌํ ๊ฐ์ ์ ์ด์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฑ๋์ ํตํด ์ ์ฑ ๋ฌธ์์ด์ ์ฃผ์ ํ์ฌ ๋ฌด๋จ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ์กฐํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐฉ์ด๋ฅผ ์ํด์๋ ํฌ๊ด์ ์ธ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ๊ณผ ์์ ํ ์ฝ๋ฉ ๋ฐฉ์์ด ํ์์ ์ ๋๋ค.
์ฑ๊ณต์ ์ธ SQL ์ฃผ์ ๊ณต๊ฒฉ์ ๋น์ฆ๋์ค ์ํฅ
COBOL-DB2 ์์คํ ์ ๋ํ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ด ์ฑ๊ณตํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ ์น๋ช ์ ์ผ ์ ์์ต๋๋ค. ์ฆ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์นจํด ์ธ์๋ ๊ณต๊ฒฉ์๋ ๋ฏผ๊ฐํ ๊ณ ๊ฐ ์ ๋ณด, ์ฌ๋ฌด ๊ธฐ๋ก ๋๋ ๊ฐ์ธ ์๋ณ์์ ๋ฌด๋จ์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ ๊ท์ ์๋ฐ, ๋ง๋ํ ๋ฒ๊ธ ๋ถ๊ณผ, ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ฐ ์ ๋ขฐ๋ฅผ ํผ์ํ๋ ํํ ์์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌ ํ๊ฒฝ์์ SQL ์ธ์ ์ ์ ์ด์์ ๋ฐฉํดํ ์ ์์ต๋๋ค. ์ฝ์ ๋ ๋ช ๋ น์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ , ์ค์ ํ๋ก์ธ์ค๋ฅผ ๋นํ์ฑํํ๋ฉฐ, ์ฒญ๊ตฌ ๋ฐ ๊ฑฐ๋ ์์คํ ์ ๋ฐฉํดํ ์ ์์ต๋๋ค. ํนํ ๋ฐฑ์ ์ด ์์๋๊ฑฐ๋ ๊ณต๊ฒฉ์ด ์ฅ๊ธฐ๊ฐ ๊ฐ์ง๋์ง ์์ ๊ฒฝ์ฐ ๋ณต๊ตฌ ์๋๊ฐ ๋๋ฆฌ๊ณ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค. ๊ท์ ๋์ ์ฐ์ ์ ๊ฒฝ์ฐ, ์นจํด ์ฌ๊ณ ๋ ์ข ์ข ์๋ฌด ์ ๋ณด ๊ณต๊ฐ ์๋ฌด๋ฅผ ๋ฐ๋ํ์ฌ ์กฐ์ง์ด ๋์ค์ ๊ฐ์๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ํ์ ์ํํ๋ ค๋ฉด ๋ค์ธต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. ์์ ํ ์ฝ๋ฉ ๊ดํ, ๋์ SQL ์ฌ์ฉ์ ๋ํ ์ฒ ์ ํ ๊ฒํ , ๊ฐ๋ ฅํ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ, ๊ทธ๋ฆฌ๊ณ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ๋ชจ๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํนํ ๋ฉ์ธํ๋ ์ ์์คํ ์ด ์ผ์ ์ด์์ ํ์์ ์ธ ์ญํ ์ ํ๋ ์ํฉ์์ ๊ธฐ์ ์ ์ด๋ฌํ ์ํ์ ๊ฐ๊ณผํ ์ ์์ต๋๋ค. COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์์ ์ต์ฐ์ ์ผ๋ก ๊ณ ๋ คํ๊ธฐ ์ํด์๋ SQL ์ฝ์ ์ ์ค์ง์ ์ธ ์ํฅ์ ์ธ์ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
COBOL-DB2 ์ฝ๋์์ SQL ์ฃผ์ ์ด ๋ํ๋๋ ๋ฐฉ์
COBOL-DB2 ์์คํ ์ ์ข ์ข ์ค์ํ ๋น์ฆ๋์ค ํ๋ก์ธ์ค์ ํต์ฌ์์ ์๋ํ์ง๋ง, SQL ์ฝ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ๊ฒ ๋ง๋๋ ์ค๊ณ ํจํด์ ํฌํจํ ์ ์์ต๋๋ค. ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ํ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ถ ์ต์ ์ธ์ด์ ๋ฌ๋ฆฌ, COBOL-DB2 ๊ฐ๋ฐ์ ๋์ SQL๊ณผ ์๋ ๋ฌธ์์ด ์กฐ์์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ด๋ฌํ ์์กด์ฑ์ ๊ณต๊ฒฉ์๊ฐ ์ ์์ ์ธ ์ ๋ ฅ์ ์ฝ์ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์กฐ์ํ ์ ์๋ ๋ค์ํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ ๋ฐฉ์์ ์ดํดํ๋ ๊ฒ์ ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณดํธํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
SQL ๋ฌธ์ ์์ ํ์ง ์์ ์ฐ๊ฒฐ
COBOL-DB2์์ SQL ์ธ์ ์ ์ด ๋ฐ์ํ๋ ๊ฐ์ฅ ํํ ์์ธ ์ค ํ๋๋ ์ฌ์ฉ์ ์ ๋ ฅ์ SQL ๋ฌธ์ ์์ ํ์ง ์๊ฒ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ ํนํ ์ ์ฐํ ๊ฒ์ ์กฐ๊ฑด์ด๋ ๋ณด๊ณ ์ ์์ฑ ์ ๋ฌธ์์ด ์กฐ์์ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ ์ ํ ๊ฒ์ฌํ์ง ์์ผ๋ฉด ์ด๋ฌํ ๊ดํ์ ๋ณธ์ง์ ์ผ๋ก ์ํํฉ๋๋ค.
๊ณต๊ฒฉ์๋ ์ ์ฑ SQL ์ฝ๋๋ฅผ ์ฝ์ ํ์ฌ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. COBOL์ ๋์ SQL์๋ ์ต์ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ์๋ ๋ณดํธ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํจํด์ ํนํ ์ํํฉ๋๋ค. ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ ๋ขฐํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์ฌ๊ฐํ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ด๋ํ ์ ์๋ ์ค์์ ๋๋ค.
์์ ํ ์ฝ๋ฉ ๋ฐฉ์์ ์ด๋ฌํ ํจํด์ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ก ๋์ฒดํ์ฌ ์ ๋ ฅ๊ฐ์ ์ง์ ์ฐ๊ฒฐํ ํ์์ฑ์ ์ ๊ฑฐํฉ๋๋ค. SQL ์ฃผ์ ๊ณต๊ฒฉ์ ๋ํ ๋ ธ์ถ์ ์ค์ด๋ ค๋ฉด ์ด๋ฌํ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
EXEC SQL ๋ฐ CURSOR ์ฌ์ฉ ์ ์ ๋ ฅ ๊ฒ์ฆ ๋ถ์กฑ
๋ ๋ค๋ฅธ ์ทจ์ฝ์ ์ EXEC SQL ๋๋ CURSOR ๋ช ๋ น๋ฌธ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฝ์ ํ๊ธฐ ์ ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋๋ ์ญ์ ํ์ง ์๋ ๋ฐ์ ๋น๋กฏ๋ฉ๋๋ค. COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ํฐ๋ฏธ๋ ์ธ์ , ๋ฐฐ์น ํ์ผ, ์น ํ๋ฐํธ์๋ ๋ฑ ๋ค์ํ ์ฑ๋์ ์ ๋ ฅ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ ๋ ฅ์ด ์ ์ ํ ๊ฒ์ฌ ์์ด ์์ ๋๋ฉด SQL ์ธ์ ์ ์ ๋งค๊ฐ์ฒด๊ฐ ๋ฉ๋๋ค.
์คํ ์ฌ๊ธฐ๋ค:
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT * FROM CUSTOMERS WHERE NAME = :USER-NAME
END-EXEC.
ํธ์คํธ ๋ณ์๋ ๋ฌธ์์ด ์ฐ๊ฒฐ๋ณด๋ค ์์ ํ์ง๋ง, ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ํจ์ฑ์ด ๊ฒ์ฆ๋์ง ์์ผ๋ฉด ์ฌ์ ํ ์ค์ฉ๋ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ์๋ ๊ตฌ๋ฌธ ๋ถ์์ด๋ ๋ฐฑ์๋ ๋ก์ง์ ์ทจ์ฝ์ ์ ์ ์ฉํ๊ธฐ ์ํด ์์์น ๋ชปํ ๋ฌธ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋์ฑ์ด, ๊ตฌํ COBOL ํ๋ก๊ทธ๋จ์ ๋งค๊ฐ๋ณ์ ๋ฐ์ธ๋ฉ ์์ด ์ฌ์ฉ์ ์ ๋ ฅ์ ๋จ์ํ ์ฐ๊ฒฐํ๋ ์ค๋น๋ ๋ช ๋ น๋ฌธ๊ณผ ํจ๊ป ๋์ SQL์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ํ ์ ์ฝ ์กฐ๊ฑด ์ ์ฉ, ํ์ฉ ๊ฐ๋ฅํ ๊ฐ ํ์ฉ ๋ชฉ๋ก ์ถ๊ฐ, ํน์ ๋ฌธ์ ์ญ์ ๋ฑ ํฌ๊ด์ ์ธ ์ ๋ ฅ ๊ฒ์ฆ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ๋ฐ์๋ ๋ชจ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ๋ขฐํ ์ ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์๊ฒฉํ ๊ฒ์ฆ์ ์ ์ฉํ์ฌ ์ธ์ ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค.
์ทจ์ฝํ COBOL-DB2 ์ฝ๋ฉ ํจํด์ ์
์ํํ ์ฝ๋ฉ ํจํด์ ์ธ์ํ๋ ๊ฒ์ ๋ชจ๋ ํ์ง ๋๋ ํด๊ฒฐ ๋ ธ๋ ฅ์ ํ์์ ์ ๋๋ค. ๋ ๊ฑฐ์ COBOL-DB2 ํ๋ก๊ทธ๋จ์๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ฉํ ์ ์๋ ์๋ง์ ์๋ชป๋ ๊ดํ ์ฌ๋ก๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ผ๋ฐ์ ์ธ ํจํด์ผ๋ก๋ WHERE ์ ์ ์ง์ ์ ๋ ฅ๋ ์ฌ์ฉ์ ์ ๋ ฅ, ์ด์ค์ผ์ดํ๋์ง ์์ ๋์ SQL ๋ฌธ์์ด, ์ฐ๊ฒฐ๋ ๋ช ๋ น์ ๋ํ ๋ถ์ถฉ๋ถํ ๊ฒ์ฌ ๋ฑ์ด ์์ต๋๋ค.
์์ ํ์ง ์์ ๋์ SQL์ ์:
STRING 'DELETE FROM ORDERS WHERE ID = ' DELIMITED BY SIZE
USER-INPUT-ID DELIMITED BY SIZE
INTO SQL-STRING
์ด๋ฌํ ํจํด์ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๊ฐ์ด ์ ๋๋ก ๊ฒ์ฆ๋๊ฑฐ๋ ์ ์ ๋์ง ์์์ ๋ ์ง์ ์ ์ธ ๊ณต๊ฒฉ ์ง์ ์ ์์ฑํฉ๋๋ค. ๊ณต๊ฒฉ์๋ SQL ๋ช ๋ น์ ์์ ํ๊ฑฐ๋ ํ์ฅํ๋ ์ ๋ ฅ๊ฐ์ ์กฐ์ํ์ฌ ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋, ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ ธ์ถํ ์ ์์ต๋๋ค.
์ฝ๋ ๊ฒํ ๋ฐ ์ ์ ๋ถ์ ๊ณผ์ ์์ ์ด๋ฌํ ํจํด์ ํ์ ํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ์ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ์ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฆฌํฉํ ๋ง์ ์ฐ์ ์ํด์ผ ํฉ๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณต์กํ ํ๋ก์์ ๋ฅผ ๋ ์๊ณ ์ง์ค์ ์ธ ๋ฃจํด์ผ๋ก ๋๋๋ฉด ๊ฒ์ฆ์ ๊ฐ์ํํ๊ณ ์ ๋ฐ์ ์ธ ์ํ ์์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๋ ๊ฑฐ์ ์ฝ๋ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ ๊ณผ์
COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์์ ๋ ธํํ์ ๋ณต์ก์ฑ ๋๋ฌธ์ ํนํ ์ด๋ ต์ต๋๋ค. ๋ง์ ๋ฉ์ธํ๋ ์ ์์คํ ์ ์์ญ ๋ ์ ๊ฑธ์ณ ๋ฐ์ ํด ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต, ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ๋ถ์ฑ๊ฐ ๋์ ๋์์ต๋๋ค. ์ด๋ฌํ ์์คํ ์ ์ ์ง ๊ด๋ฆฌํ๋ ํ์ ํน์ ์ค๊ณ ์ ํ์ ์ด์ ๋ ์ฌ๋ฌ ๋ชจ๋์ ์ํธ ์์ฉ์ ์ดํดํ๋ ๋ฐ ํ์ํ ์ฒด๊ณ์ ์ธ ์ง์์ด ๋ถ์กฑํ ์ ์์ต๋๋ค.
๋ ๊ฑฐ์ ์ฝ๋๋ ์ข ์ข ๋ณํ์ ์ ํญํฉ๋๋ค. ํฌ๊ณ ๋ณต์กํ๊ฒ ์ฝํ ๋ฃจํด์ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ ์ํํ ์ ์์ผ๋ฉฐ, ์๋ก์ด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๋น์ฆ๋์ค์ ์ค์ํ ๊ธฐ๋ฅ์ด ์์๋ ์ ์์ต๋๋ค. ๋ํ, ์ค๋๋ ์์คํ ์ ๊ตฌ์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ต์ ํ ์คํธ ํ๋ ์์ํฌ๊ฐ ๋ถ์กฑํ์ฌ ํฌ๊ด์ ์ธ ๊ฒ์ฆ์ ๋ฌ์ฑํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ก ์ธํด ์ฌ์ ์๋ฐฉ์ ๋ณด์ ๊ฒํ ์ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ด ํ์์ ์ ๋๋ค. ์กฐ์ง์ ์ด๊ธฐ ์์ ์์ ์ ๊ฐ์ฅ ๋ง์ด ๋ ธ์ถ๋๊ณ ์์ฃผ ์์ ๋๋ ๊ตฌ์ฑ ์์๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ ์ง์ ์ธ ๊ฐ์ ๊ณผ ๊ฐ๋ ฅํ ํ ์คํธ ๊ดํ์ ๋ณํํ๋ฉด ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณด์์ ๊ฐํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ฅผ ์ธ์ํ๋ ๊ฒ์ SQL ์ฝ์ ๋ฐ ๊ธฐํ ์ํ์ผ๋ก๋ถํฐ COBOL-DB2 ์์คํ ์ ๋ณดํธํ๊ธฐ ์ํ ํ์ค์ ์ด๊ณ ์ง์ ๊ฐ๋ฅํ ์ ๋ต์ ์๋ฆฝํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
SQL ์ฃผ์ ์ ์๋์ผ๋ก ๊ฐ์งํ๋ ๊ธฐ์
COBOL-DB2 ์์คํ ์ SQL ์ธ์ ์ ์ทจ์ฝ์ ์ ์ฐพ๋ ๊ฒ์ ์ข ์ข ์๋ ๋ถ์์ผ๋ก ์์๋ฉ๋๋ค. ์๋ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ง๋ฅผ ๊ฐ์ํํ ์ ์์ง๋ง, ๊ณ ์ํ ์ฝ๋ ํจํด์ ๋ฐ๊ฒฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ์ฌ์ ํ ํ์์ ์ ๋๋ค. ์๋ ๊ธฐ๋ฒ์ ํตํด ๊ฐ๋ฐ์์ ๋ณด์ ๋ถ์๊ฐ๋ ๋ฌธ์๊ฐ ๋ถ์กฑํ๊ณ ์ค๊ณ ๊ฒฐ์ ์ด ๋ถํฌ๋ช ํ ๋ ๊ฑฐ์ ์์คํ ์ ๋ํ ์ํฉ์ ์ดํด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ต์ ์ ๋ฐฉ์ด์ ์ ํ์ฑํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ ์ฉํ๊ธฐ ์ ์ ์ทจ์ฝํ ์์ญ์ ํ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
์๋ ์ฝ๋ ๊ฒํ : ์ํ๋๊ฐ ๋์ SQL ๋ฌธ ๋ฐ๊ฒฌ
์๋ ์ฝ๋ ๊ฒํ ๋ COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์์ SQL ์ธ์ ์ ์ํ์ ์๋ณํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. ๊ฒํ ์๋ SQL ๋ฌธ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๊ณ ์ฌ์ฉ์ ์ ๋ ฅ์ด ์ด๋์ ์ ๋ ฅ๋๋์ง์ ์ด์ ์ ๋ง์ถฐ ํ๋ก๊ทธ๋จ ๋ ผ๋ฆฌ๋ฅผ ๊ฒํ ํฉ๋๋ค. ํนํ ์ ๋ ฅ์ด ๋ช ๋ น์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์๋ ๋์ SQL์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ ๋๋ค.
ํธ์คํธ ๋ณ์๋ ์ด๋ ์ ๋ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ฐ๋์ ํ์ธํด์ผ ํฉ๋๋ค. ํจ๊ณผ์ ์ธ ์ฝ๋ ๊ฒํ ๋ ์ผ๊ด๋ ์ ์ ํจํด, ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ์ ์ ์ ํ ์ฌ์ฉ, ๊ทธ๋ฆฌ๊ณ ์์ ํ์ง ์์ ์ฐ๊ฒฐ(unsafe concatenation) ๋ฐฉ์ง๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ ๋ฆฌํฉํ ๋ง ๊ฐ๋ฅํ ๋ฐ๋ณต ๋ก์ง์ ํ์ธํ์ฌ ์ ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ๋ ์์ ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ์์ญ์ ์ฒด๊ณ์ ์ผ๋ก ๊ฒํ ํจ์ผ๋ก์จ ํ์ ์์ ์ด ํ์ํ ๊ณ ์ํ ๊ตฌ๋ฌธ์ ํ์ ํ ์ ์์ต๋๋ค.
COBOL ์ฝ๋์์ ๋์ SQL ์์ฑ ์ถ์
๋์ SQL์ COBOL-DB2 ์์คํ ์์ ํํ ์ฌ์ฉ๋๋๋ฐ, ์ด๋ ๋ฐํ์ ์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ฐํ๊ฒ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ์ฐ์ฑ์ ์ธ์ ์ ์ํ ์ถ์ ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ์๋ ๋ถ์์ ๋ณ์๊ฐ ์ฝ๋์์ ์ด๋ป๊ฒ ์ด๋ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ ๋ ฅ์ด SQL ๋ช ๋ น์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ ์๋์ง ์ดํดํด์ผ ํฉ๋๋ค.
์๋ ์ถ์ ์ ์ ๋ ฅ๋ถํฐ ์คํ๊น์ง ๋ณ์๋ฅผ ์ถ์ ํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ ๋๋ ์ด๊ท ๊ณผ์ ์ ๊ฒฐํจ์ด ์๋์ง ํ์ธํ๋ ๊ณผ์ ์ ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๋ฐฐ์น ํ์ผ์์ ์ ๋ ฅ๋ ๋ด์ฉ์ด๋ ์์ ํ๋ค๊ณ ์ฌ๊ฒจ์ก๋ ๊ธฐ์กด ์ธํฐํ์ด์ค์ ๊ฐ์ ๋ฏธ๋ฌํ ๋ฌธ์ ๋ค์ด ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ณด์ ํ์ ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ์ ์คํ๊ฒ ์ถ์ ํจ์ผ๋ก์จ ์๋ํ ๋๊ตฌ๊ฐ ๋์น๊ฑฐ๋ ๊ณ ๋๋ก ๋ง์ถคํ๋ ๋ ๊ฑฐ์ ์์คํ ์์ ํด์ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ ์นจํฌ ๊ธฐํ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
์ ๊ตํ๊ฒ ์์ฑ๋ ์ ๋ ฅ์ ์ฌ์ฉํ ํ ์คํธ(์ค๋ฅ ๊ธฐ๋ฐ ๋ฐ ๋์ ๊ฐ์ง)
์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ ์ธ์๋, ์ ๊ตํ๊ฒ ์กฐ์๋ ์ ๋ ฅ์ ์ด์ฉํ ์๋ ํ ์คํธ๋ SQL ์ธ์ ์ ์ทจ์ฝ์ ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณด์ ํ ์คํฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฑ๋์ ํตํด ์ ์์ ์ด๊ฑฐ๋ ์์์น ๋ชปํ ์ ๋ ฅ์ ์ ๊ณตํ์ฌ ์์คํ ์ ๋ฐ์์ ๊ด์ฐฐํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํนํ ์ค๋ฅ ๊ธฐ๋ฐ ์ธ์ ์ ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค. ์ ๋ ฅ์ ์๋ชป ์ฒ๋ฆฌํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐํํ์ฌ ๊ธฐ๋ณธ SQL ๊ตฌ๋ฌธ์ ๋๋ฌ๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
' OR '1'='1
์์คํ ์ด ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋ฐํํ๊ฑฐ๋ ์ฟผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋๋ฌ๋ด๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ ์ทจ์ฝ์ ์ด ๋ ธ์ถ๋ ์ ์์ต๋๋ค. ๋์ ํ์ง๋ ์ ์์ ์ธ ์ ๋ ฅ์ด ์ฌ์ฉ๋ ๋ ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ ์งํฉ์ด๋ ๋ฌด๋จ ์ก์ธ์ค์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ๋ณํ๋ฅผ ๊ฐ์ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
์๋ ํ ์คํธ๋ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ COBOL-DB2 ์์คํ ์ ํนํ ์ค์ํฉ๋๋ค. ๋ฐฐ์น ์์ , ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ , API ์๋ํฌ์ธํธ๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆ ์์ด SQL์ ์ ๋ฌํ๋ ๊ฒฝ์ฐ, ์ธ์ ์ ์ ์ง์ ์ ์ผ๋ก ์์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํ ์คํธํจ์ผ๋ก์จ ํ์ ์ฝ๋ ๊ฒํ ๋ง์ผ๋ก๋ ๊ฐ์ถฐ์ง ์ ์๋ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ์ฌ ๋์ฑ ์ฒ ์ ํ ํ๊ฐ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์์ ์ ์ํ ๊ฒฐ๊ณผ ๋ฌธ์ํ ๋ฐ ์ฐ์ ์์ ์ง์
ํ์ง๋ ์ฒซ ๋จ๊ณ์ผ ๋ฟ์ ๋๋ค. ํจ๊ณผ์ ์ธ ํด๊ฒฐ์ ์ทจ์ฝ์ ์ ๋ํ ๋ช ํํ ๋ฌธ์ํ์ ์ฐ์ ์์ ์ง์ ์ ๋ฌ๋ ค ์์ต๋๋ค. ๊ฐ ํ์ ์ทจ์ฝํ ์ฝ๋, ์ํ์ ํน์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ถ์ฅ๋๋ ์ํ ์ ๋ต์ ๋ํ ์ธ๋ถ ์ ๋ณด์ ํจ๊ป ๊ฐ ๋ฐ๊ฒฌ ์ฌํญ์ ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ๋ฌธ์ํ๋ ํด๊ฒฐ์ด ๋จํธ์ ์ธ ๊ฒ์ด ์๋๋ผ ์ฒด๊ณ์ ์ด๊ณ ํฌ๊ด์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ก ๋ณด์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ธฐ๋ก์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์ค์๋ ๊ธธ : ํ๋ก๊ทธ๋จ XYZ, 150๋ฒ์งธ ์ค
- ๋ฐํ๋ฌผ: ๊ฒ์ฆ๋์ง ์์ USER-NAME์ ์ฐ๊ฒฐํ๋ ๋์ SQL
- ์ํ: SQL ์ฃผ์ ์ผ๋ก ์ธํด ๋ฌด๋จ ๋ฐ์ดํฐ ์ก์ธ์ค๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ถ์ฒ: ํธ์คํธ ๋ณ์์ ์ ๋ ฅ ๊ฒ์ฆ์ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ก ๊ต์ฒด
์ฐ์ ์์ ์ง์ ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํฉ๋๋ค. ๋ชจ๋ ์ทจ์ฝ์ ์ด ๋์ผํ ์ํ์ ์๋ฐํ๋ ๊ฒ์ ์๋๋ฏ๋ก, ํ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์์ฃผ ์คํ๋๋ ์ฝ๋์ ๋จผ์ ์ง์คํด์ผ ํฉ๋๋ค. ๋ ๊ฑฐ์ ์์คํ ์ ์ ์ง ๊ด๋ฆฌ ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก, ์ํ์ฑ์ด ๊ฐ์ฅ ๋์ ๋ฌธ์ ๋ถํฐ ๋จผ์ ํด๊ฒฐํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
SQL ์ฃผ์ ์ํ์ ๋ํ ๋ช ํํ๊ณ ์คํ ๊ฐ๋ฅํ ๊ธฐ๋ก์ ์ ์งํจ์ผ๋ก์จ ์กฐ์ง์ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์์ ํ๋ก์ ํธ๋ฅผ ๊ณํํ๊ณ , ํ ๊ฐ ํ๋ ฅ์ ๊ฐํํ๋ฉฐ, ํ์ ์ด์์ ๋ฐฉํดํ์ง ์๊ณ ์ค์ํ ์ทจ์ฝ์ ์ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํ์ง ๋ ธ๋ ฅ์ ์ง์์ ์ธ ๋ณด์ ๊ฐ์ ์ผ๋ก ์ด์ด์ง๋๋ค.
COBOL-DB2์์์ ์๋ฐฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ค๋ฉด ๊ฐ๋ณ์ ์ธ ๋ฌธ์ ์ ํจ์น๋ฅผ ์ ์ฉํ๋ ๊ฒ ์ด์์ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ์ทจ์ฝ์ ๋ฐ์ ์์ฒด๋ฅผ ์๋ฐฉํ๋ ๊ฐ๋ ฅํ๊ณ ์ผ๊ด๋ ๊ฐ๋ฐ ๊ดํ์ ๋์ ํด์ผ ํฉ๋๋ค. ๋ ๊ฑฐ์ ์์คํ ์ ํน๋ณํ ์ด๋ ค์์ ์ผ๊ธฐํ์ง๋ง, ๊ฐ๋ฐ์๋ ๊ฒ์ฆ๋ ๊ธฐ์ ์ ์ ์ฉํ์ฌ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์์ ๋ณด์์ ๊ฐํํ๊ณ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์๋ ฅ์ ๊ฐํํ์ฌ ๊ณต๊ฒฉ์์๊ฒ ํจ์ฌ ๋ ๋งค๋ ฅ์ ์ธ ๊ณต๊ฒฉ ๋์์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ ๋ฐ ํธ์คํธ ๋ณ์ ์ฌ์ฉ
COBOL-DB2์์ SQL ์ธ์ ์ ์ ๋ฐฉ์งํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ์ ๋ต ์ค ํ๋๋ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ฐ๊ฒฐ์ ํตํด ์ด์ ๋ธ๋ง๋๋ ๋์ SQL๊ณผ ๋ฌ๋ฆฌ, ๋งค๊ฐ๋ณ์ํ๋ ๋ช ๋ น๋ฌธ์ SQL ๋ช ๋ น ๊ตฌ์กฐ๋ฅผ ๋ฐ์ดํฐ ๊ฐ๊ณผ ๋ถ๋ฆฌํฉ๋๋ค. DB2๋ ์ด๋ฌํ ๋ช ๋ น๋ฌธ์ ๋ฏธ๋ฆฌ ์ค๋นํ์ฌ ์ฌ์ฉ์ ์ ๋ ฅ์ด ์๋๋ ๋ช ๋ น์ ๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค.
์์ ํ ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
EXEC SQL
SELECT * FROM CUSTOMERS WHERE NAME = :USER-NAME
END-EXEC.
์ฌ๊ธฐ :USER-NAME ์คํ ์ ์์ ํ๊ฒ ๋ฐ์ธ๋ฉ๋ ํธ์คํธ ๋ณ์์
๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ณต๊ฒฉ์๊ฐ ์
์ฉํ ์ ์๋ ๋ฌธ์์ด ์ฐ๊ฒฐ์ด ํ์ ์๋๋ก ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์
์์ ์ธ ์
๋ ฅ์ ์ ๊ณตํ๋๋ผ๋ ์คํ ์ฝ๋๊ฐ ์๋ ๋ฆฌํฐ๋ด ๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. COBOL-DB2 ์์คํ
์ ์ ์งํ๋ ํ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋์ SQL์ ํธ์คํธ ๋ณ์ ํจํด์ผ๋ก ์ฒด๊ณ์ ์ผ๋ก ๋์ฒดํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ดํ์ ๊ฐ๋ฐ์์๊ฒ ๊ต์กํ๋ ๊ฒ๋ ํ์ค ์ด์ ์ ์ฐจ๋ก ์ ์ฐฉ์ํค๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ ๋ ฅ ๊ฒ์ฆ ๋ฐ ํ์ฉ ๋ชฉ๋ก ์ ๋ต
๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ ๋ ฅ๊ฐ ๊ฒ์ฆ์ ์์๋๊ณ ์์ ํ ๊ฐ๋ง ์์คํ ์ ์ ๋ ฅ๋๋๋ก ํ๋ ๋ฐ ํ์์ ์ ๋๋ค. COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ์จ๋ผ์ธ ์์๋ถํฐ ์ผ๊ด ์ฒ๋ฆฌ ํ๋ก์ธ์ค๊น์ง ๋ค์ํ ์ ๋ ฅ ์์ค์ ์ํธ ์์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๊ฐ ์ง์ ์ ์ ๋ฐ์ดํฐ ๊ฒ์ฆ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ์ธ์ ์ ๋ฒกํฐ๊ฐ ๋ ์ ์์ต๋๋ค.
ํจ๊ณผ์ ์ธ ๊ฒ์ฆ์ ํ์ฉ๋๋ ์ ๋ ฅ๊ฐ์ ๋ํ ์๊ฒฉํ ๊ท์น์ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋์ ์ํ๋ฒณ๋ง ํฌํจ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ชจ๋ ์ ๋ ฅ๊ฐ์ ๊ฑฐ๋ถํฉ๋๋ค. ํ์ฉ๋๋ ๊ฐ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ํ์ฉ ๋ชฉ๋ก์ ๊ณต๊ฒฉ์๊ฐ ์ข ์ข ์ฐํํ ์ ์๋ ์๋ ค์ง ์ ์ฑ ํจํด์ ์ฐจ๋จ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์์ ํฉ๋๋ค.
COBOL์์์ ๊ฒ์ฆ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
IF USER-NAME NOT ALPHABETIC
MOVE 'INVALID INPUT' TO ERROR-MSG
GO TO ERROR-HANDLER
END-IF.
๋ชจ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ํ ์๊ฒฉํ ๊ฒ์ฌ๋ฅผ ์ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ํดํ ๋ฐ์ดํฐ๊ฐ SQL ์คํ ๋จ๊ณ์ ๋๋ฌํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ SQL ์ฝ์ ์ํ์ ํฌ๊ฒ ์ค์ด๋ ๋์์ ์ ๋ฐ์ ์ธ ๋ฐ์ดํฐ ํ์ง๊ณผ ์์คํ ์์ ์ฑ์ ํฅ์์ํต๋๋ค.
๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋์ SQL ์ฌ์ฉ ์ต์ํ
๋์ SQL์ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ ์คํ๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ฌ๊ฐํ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ง์ COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ ๋๋ ๋งค๊ฐ๋ณ์ํ๋ ๋ช ๋ น๋ฌธ์ผ๋ก๋ ์ถฉ๋ถํ ๊ฒฝ์ฐ์๋ ๋์ SQL์ด ๊ณผ๋ํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ๋์ SQL์ ๋ํ ์์กด๋๋ฅผ ์ค์ด๋ ๊ฒ์ ์ธ์ ์ ์ํ์ ์ต์ํํ๋ ๊ฐ๋ ฅํ ์ ๋ต์ ๋๋ค.
ํ์ ๋์ SQL์ด ๋ถํ์ํ ๋ถ๋ถ์ ํ์ ํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ๊ฐ์ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณ ์ ๋ ๊ตฌ์กฐ์ ์์ธก ๊ฐ๋ฅํ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ฟผ๋ฆฌ๋ ๊ฑฐ์ ํญ์ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ ์ SQL๋ก ๋ค์ ์์ฑ๋ ์ ์์ต๋๋ค. ์ ์ฐํ ๋ณด๊ณ ์๊ตฌ ์ฌํญ์ฒ๋ผ ๋์ SQL์ด ๋ถ๊ฐํผํ ๊ฒฝ์ฐ์๋ ์๊ฒฉํ ์ ๋ ฅ ๊ฒ์ฆ๊ณผ ์ค๋น๋ ๋ช ๋ น๋ฌธ ์ฌ์ฉ์ ํตํด ์ ์คํ๊ฒ ์ค๊ณํด์ผ ํฉ๋๋ค.
๋์ SQL์ ์ต์ํํ๋ฉด ๊ณต๊ฒฉ ๋ ธ์ถ ์์ญ์ด ์ค์ด๋ค ๋ฟ๋ง ์๋๋ผ ์ ์ง ๊ด๋ฆฌ๋ ๊ฐ์ํ๋ฉ๋๋ค. ์ ์ ์ฟผ๋ฆฌ๋ ์ฝ๊ณ , ํ ์คํธํ๊ณ , ์ ํ์ฑ์ ๊ฒ์ฆํ๊ธฐ๊ฐ ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ์ ์ฟผ๋ฆฌ๊ฐ ๋ ์ ํธ๋ฉ๋๋ค.
DB2์์ ์ต์ ๊ถํ ์ก์ธ์ค ์ ์ด ๊ตฌํ
์๋ฒฝํ ์ ๋ ฅ ๊ฒ์ฆ๊ณผ ์์ ํ ์ฟผ๋ฆฌ ์์ฑ์๋ ๋ถ๊ตฌํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ ์ด๋ ์ค์ํ ์ตํ์ ๋ฐฉ์ด์ ์ญํ ์ ํฉ๋๋ค. ์ต์ ๊ถํ ์์น์ ๊ฐ ์ฌ์ฉ์ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์๊ฐ ํด๋น ์ญํ ์ ํ์ํ ๋ฐ์ดํฐ์ ์์ ์๋ง ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
DB2 ์์คํ
์ ๊ฒฝ์ฐ, ์ด๋ ๊ฐ ํ๋ก๊ทธ๋จ, ์ฌ์ฉ์ ๋๋ ์๋น์ค ๊ณ์ ์ ๋ํด ์ ํํ ๊ถํ์ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ด๋ฒ์ํ ๊ถํ์ ๋ถ์ฌํ์ง ๋ง์ญ์์ค. DBADM or ALL PRIVILEGES ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด, ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฅ์ ํ์ํ ํน์ ํ
์ด๋ธ, ๋ทฐ ๋๋ ์ ์ฅ ํ๋ก์์ ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํ์ธ์.
์ :
GRANT SELECT ON CUSTOMERS TO APP-USER;
์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฃผ์ ์๋๊ฐ ์ฑ๊ณตํ๋๋ผ๋ ์ ์ฌ์ ํผํด๋ฅผ ์ ํํฉ๋๋ค. ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ๊ณต๊ฒฉ์๋ ํด๋น ๊ณ์ ์ ํ์ฉ๋ ์ต์ํ์ ๋ฐ์ดํฐ ๋๋ ์์ ์๋ง ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ถํ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํ๋ฉด ๊ถํ ์ฆ๊ฐ๋ก ์ธํด ์ด๋ฌํ ๋ณด์ ์กฐ์น๊ฐ ์ฅ๊ธฐ์ ์ผ๋ก ์ฝํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค๋ฅธ ๋ณด์ ์ฝ๋ฉ ๊ดํ๊ณผ ํจ๊ป ์ต์ ๊ถํ ์์น์ ์ ์ฉํจ์ผ๋ก์จ ์กฐ์ง์ SQL ์ฃผ์ ๊ณต๊ฒฉ์ด ์ฑ๊ณตํ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ๋ฎ์ถ๋ ๊ณ์ธต์ ๋ฐฉ์ด ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
ํ์ง ๋ฐ ์์ ์๋ํ SMART TS XL
SQL ์ธ์ ์ ์ ๋ฐฉ์งํ๋ ๋ฐ๋ ์๋ ๊ธฐ๋ฒ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ํ์์ ์ด์ง๋ง, ํฌ๊ณ ๋ณต์กํ COBOL-DB2 ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ๋ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ ๊ฑฐ์ ์์คํ ์๋ ์ฌ๋ฌ ํ์ด ์์ญ ๋ ์ ๊ฑธ์ณ ๊ฐ๋ฐํ ์์ฒ ์ค์ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ ์ ์์ต๋๋ค. ๋ชจ๋ ์ธ์ ์ ์ํ์ ์๋์ผ๋ก ํ์ ํ๋ ๊ฒ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ์๋ํ๋ ์ฒด๊ณ์ ์ธ ์ทจ์ฝ์ ๊ฒ์ฌ, ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณ๊ฒฝ ์ฌํญ ์ถ์ , ๊ทธ๋ฆฌ๊ณ ์์ ์์ ์๋ด๋ฅผ ํตํด ์ด๋ฌํ ๊ณต๋ฐฑ์ ๋ฉ์๋๋ค. SMART TS XL COBOL-DB2 ํ๊ฒฝ์์ ํ์ด ์ด๋ฌํ ๊ณผ์ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋๋ก ํน๋ณํ ๊ตฌ์ถ๋์์ผ๋ฉฐ, ๋ฉ์ธํ๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ ํ ์๊ตฌ ์ฌํญ์ ๋ง์ถฐ ์กฐ์ ๋ ๊ณ ๊ธ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.

๋ฐฉ๋ฒ SMART TS XL COBOL-DB2์ SQL ์ฃผ์ ์ทจ์ฝ์ ๊ฒ์ฌ
SMART TS XL COBOL-DB2 ํ๋ก๊ทธ๋จ์ SQL ์ฝ์ ์ํ์ ์๋ณํ๊ธฐ ์ํด ์ฌ์ธต์ ์ธ ์ ์ ์ฝ๋ ๋ถ์์ ์ํํฉ๋๋ค. ์ผ๋ฐ ๊ฒ์ฌ ๋๊ตฌ์ ๋ฌ๋ฆฌ, ๋ด์ฅ๋ DB2 SQL ๋ฌธ์ ํฌํจํ COBOL ์ฝ๋์ ๊ตฌ๋ฌธ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ดํดํฉ๋๋ค. ์ฝ๋๋ฅผ ์ธ๋ถ์ ์ผ๋ก ๋ถ์ํ์ฌ SMART TS XL ์ฃผ์ ์ทจ์ฝ์ ์ผ๋ก ์ด์ด์ง ์ ์๋ ๋์ SQL ๊ตฌ์ฑ ํจํด, ๋ฌธ์์ด ์ฐ๊ฒฐ์ ๋ถ์ ์ ํ ์ฌ์ฉ, ์์ ํ์ง ์์ ๋ณ์ ๋ฐ์ธ๋ฉ์ ์๋ณํ ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์ ๋ฐ์ธ๋ฉ ์์ด ์ค๋น๋ ๋ช ๋ น๋ฌธ์ ์์ ํ์ง ์์ ์ฌ์ฉ์ ๊ฐ์งํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์ ์ฌ์ ์ธ ์ธ์ ์ ๋ฒกํฐ๋ฅผ ๊ฒฝ๊ณ ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์์ค์ ์ ๋ฐ์ฑ์ SQL์ด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊น์ด ์ฝํ ์๊ณ ์๋์ผ๋ก ๊ฒํ ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ ๋ฉ์ธํ๋ ์ ํ๊ฒฝ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ฒ์ฌํจ์ผ๋ก์จ, SMART TS XL ์จ๊ฒจ์ง ์ฃผ์ ์ํ์ด ๊ฐ๊ณผ๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
COBOL-DB2 ๋ถ์(ํจํด ์ธ์, ๋ฐ์ดํฐ ํ๋ฆ ์ถ์ )์ ์ํ ์ฃผ์ ๊ธฐ๋ฅ
์ค ํ๋ SMART TS XL์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ COBOL-DB2์ ํนํ๋ ๊ณ ์ํ ์ฝ๋ฉ ํจํด์ ์ธ์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๋๊ตฌ๋ ์๋ ค์ง ์์ ํ์ง ์์ ํจํด๊ณผ ์ค์ ๋ฉ์ธํ๋ ์ ๊ฐ๋ฐ ๊ดํ์ ๋ฐ์ํ๋ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ๊ท์น์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ถํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค. ์ฐ๊ฒฐ๋ SQL ๋ฌธ์์ด, ๊ฒ์ฆ๋์ง ์์ ์ฌ์ฉ์ ์ ๋ ฅ, ํธ์คํธ ๋ณ์์ ์ผ๊ด๋์ง ์์ ์ฌ์ฉ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
ํจํด ๋งค์นญ์ ๋์ด์, SMART TS XL ์ ๊ตํ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ์ํํฉ๋๋ค. ์ฆ, ์ฌ์ฉ์ ์ ๋ ฅ์ด ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด๋ ๋ชจ๋์ ๊ฑธ์ณ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ด๋ํ๋์ง ์ถ์ ํ์ฌ SQL ์คํ ์ง์ ์ ๋๋ฌํ์ง ์๊ณ ๊ฒ์ฆ๋์ง ์์ ์ํ๋ก ๋๋ฌํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ์ ๋ ฅ๋ ๋ณ์๊ฐ ๋์ค์ EXEC SQL ๋ธ๋ก์์ ์ ํจ์ฑ ๊ฒ์ฌ ์์ด ์ฌ์ฉ๋๋์ง ๊ฐ์งํ ์ ์์ต๋๋ค.
EXEC SQL
PREPARE DYN-STMT FROM :SQL-COMMAND
END-EXEC.
์ด๋ฌํ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ถ์ํจ์ผ๋ก์จ ์ด ๋๊ตฌ๋ ํ์ด ์ทจ์ฝ์ ์ด ์ด๋์ ์๋์ง ๋ฟ๋ง ์๋๋ผ ์ทจ์ฝ์ ์ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง๋ ํ์ ํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ๋ํ ํจ์ฌ ๋ ํฌ๊ด์ ์ธ ๊ด์ ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ์ด๋ ๊ต์ SMART TS XL
์ทจ์ฝ์ ์ ํ์ ํ๋ ๊ฒ์ ์ ํฌ์ ์ ๋ฐ์ผ ๋ฟ์ ๋๋ค. ์ทจ์ฝ์ ์ ํจ๊ณผ์ ์ผ๋ก ์์ ํ๋ ๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํฉ๋๋ค. SMART TS XL COBOL-DB2 ์ฝ๋์ ๋ง์ถฐ ์คํ ๊ฐ๋ฅํ ์์ ์ง์นจ์ ์ ๊ณตํจ์ผ๋ก์จ ํ์ง๋ฅผ ๋์ด, ์ทจ์ฝ์ ์ ์๋ณํฉ๋๋ค. ์ทจ์ฝ์ ์ด ํ๋๊ทธ๋๋ฉด ์ด ๋๊ตฌ๋ ํด๋น ์ทจ์ฝ์ ์ด ์ํํ ์ด์ ๋ฅผ ์ค๋ช ํ๊ณ , ์ ํํ ์ฝ๋ ์์น๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, SMART TS XL ์์ ํ์ง ์์ ๋ฌธ์์ด ์ฐ๊ฒฐ์ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋งค๊ฐ๋ณ์ํ๋ EXEC SQL ๋ธ๋ก์ผ๋ก ๋์ฒดํ๋ ๊ฒ์ ๊ถ์ฅํ ์ ์์ต๋๋ค. ๋ํ ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ฐํํ๊ฑฐ๋ ๋์ SQL ์ฌ์ฉ์ ์ต์ํํด์ผ ํ๋ ๋ถ๋ถ์ ๊ฐ์กฐํฉ๋๋ค. ์ด๋ฌํ ๋ง์ถคํ ์ง์นจ์ ์ ๊ณตํจ์ผ๋ก์จ, SMART TS XL ๋ณด์ ์ ๋ฌธ๊ฐ๋ ์๋์ง๋ง ์ค์ํ ๋ ๊ฑฐ์ ์์คํ ์ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ฐ๋ฐ์์ ํ์ต ๊ณก์ ์ ์ค์ฌ์ค๋๋ค.
๊ฐ์ด๋ ์์ ์ ๋ํ ์ด๋ฌํ ์ง์์ ์์ ์ฌํญ์ด ์ผ๊ด๋๊ณ ํจ๊ณผ์ ์ด๋ฉฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ง์ถฐ์ ธ ์๋์ง ํ์ธํ์ฌ ํฅํ ์ ๋ฐ์ดํธ์์ ์ทจ์ฝ์ ์ด ๋ค์ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค.
๊ท์ ์ค์ ๋ฐ ๊ฐ์ฌ๋ฅผ ์ํ ๋ณด๊ณ ์ ์์ฑ
๋ณด์์ ๋จ์ํ ์ฝ๋๋ฅผ ์์ ํ๋ ๊ฒ๋ง์ด ์๋๋๋ค. ์ดํด๊ด๊ณ์์๊ฒ ์์คํ ์ด ์ ์ ํ๊ฒ ์ ์ง ๊ด๋ฆฌ๋๊ณ ๋ชจ๋ํฐ๋ง๋๊ณ ์์์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๋ ํ์ํฉ๋๋ค. SMART TS XL ํ์ด SQL ์ฃผ์ ์ํ์ ์ค์ด๊ธฐ ์ํ ๋ ธ๋ ฅ์ ๋ฌธ์ํํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฐ๋ ฅํ ๋ณด๊ณ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ด๋ฌํ ๋ณด๊ณ ์์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์ฌ๊ฐ๋ ๋ฑ๊ธ์ด ํฌํจ๋ ์๋ณ๋ ์ทจ์ฝ์ ๋ชฉ๋ก
- ์ํํ ์ฝ๋ ํจํด์ ์์น
- ๋ณต๊ตฌ ๋ ธ๋ ฅ์ ์ํ
- ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ํ ๊ฐ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ญ์ฌ์ ์ถ์ธ
์ด๋ฌํ ๋ฌธ์๋ ๋ด๋ถ ๊ฒํ , ์ธ๋ถ ๊ฐ์ฌ ๋ฐ ๊ท์ ์ค์ ์๊ฑด์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ณด์ ๊ฐ์ ์ ๋ํ ๋ช ํํ๊ณ ์คํ ๊ฐ๋ฅํ ์ฆ๊ฑฐ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ, SMART TS XL ์กฐ์ง์ด ๊ณ ๊ฐ, ๊ท์ ๊ธฐ๊ด ๋ฐ ๊ฒฝ์์ง๊ณผ์ ์ ๋ขฐ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด๋ฌํ ๋ณด๊ณ ์์ ์ ์๋ํํ๋ฉด ๊ฐ๋ฐํ์ ์์์ ๋ถ๋ด๋ ์ค์ด๋ค์ด ์์ ํ๊ณ ์์ ์ ์ธ ์ํํธ์จ์ด ์ ๊ณต์ ์ง์คํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด SMART TS XL ๊ธฐ์ ์ ๊ฐ์ ๋ฟ๋ง ์๋๋ผ ํ๋ ๋ฉ์ธํ๋ ์ ๋ณด์์ ํ์์ ์ธ ๋ณด๋ค ๊ด๋ฒ์ํ ๊ฑฐ๋ฒ๋์ค ๋ฐ ๊ท์ ์ค์ ํ๋ก์ธ์ค๋ ์ง์ํฉ๋๋ค.
์ฌ๋ก ์ฐ๊ตฌ: SQL ์ฃผ์ ์ทจ์ฝ์ ํด๊ฒฐ
์ค์ ์ฌ๋ก๋ COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์์ SQL ์ฝ์ ๋ฌธ์ ๊ฐ ์ด๋ป๊ฒ ๋ํ๋๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋์ง ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ค์ ์ฐ์ ๋ถ์ผ์ ๋ง์ ๋ ๊ฑฐ์ ์์คํ ์๋ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ๋๋ฆฌ ์ฑํ๋๊ธฐ ํจ์ฌ ์ด์ ์ ์์ฑ๋ ์ทจ์ฝํ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ค์ ์ทจ์ฝ์ ์ด ์ด๋ป๊ฒ ๋ฐ๊ฒฌ, ๋ถ์ ๋ฐ ์์ ๋๋์ง ๊ฒํ ํจ์ผ๋ก์จ ํ์ ์ฒด๊ณ์ ์ธ ํ์ง์ ๊ฐ์น์ ์ต์ ๋๊ตฌ ๋ฐ ๊ดํ์ ์ค์์ฑ์ ๋ ์ ์ดํดํ ์ ์์ต๋๋ค.
๋ ๊ฑฐ์ COBOL-DB2 ์ฝ๋์์ ์ค์ SQL ์ฃผ์ ๊ฒฐํจ ์๋ณ
๊ณ ๊ฐ ์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๊ธฐ ์ํด ๊ฐ๋ฐ๋ COBOL-DB2 ํ๋ก๊ทธ๋จ์ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ์ฝ๋์๋ ํฐ๋ฏธ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์์ ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ๊ฐ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์๋๋ ์ ์ฐํ๊ฒ ์ค๊ณ๋์์ง๋ง, ์ฐ๊ฒฐ๋ ๋ฌธ์์ด์์ ์์ฑ๋ ๋์ SQL์ ์ฌ์ฉํฉ๋๋ค.
MOVE 'SELECT * FROM CUSTOMER WHERE NAME = ''' TO SQL-CMD.
STRING USER-NAME DELIMITED BY SIZE INTO SQL-CMD.
์ผ์์ ์ธ ๊ฒํ ๊ณผ์ ์์ ์ด๋ฌํ ํจํด์ ์ฆ๊ฐ์ ์ผ๋ก ์ํ ์ ํธ๋ฅผ ๋ฐ์์ํต๋๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ด SQL ๋ช ๋ น์ ์ง์ ์ฝ์ ๋๊ธฐ ๋๋ฌธ์, ๊ณต๊ฒฉ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ ฅ์ ์กฐ์ํ ์ ์์ต๋๋ค.
' OR '1'='1
์ด ์ ๋ ฅ์ WHERE ์ ์ ๋ณ๊ฒฝํ์ฌ ์ฟผ๋ฆฌ๊ฐ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋ฐํํ๋๋ก ํฉ๋๋ค. ์ด๋ฌํ ๊ฒฐํจ์ ๋ฏผ๊ฐํ ๊ณ ๊ฐ ์ ๋ณด์ ๋ํ ๋ฌด๋จ ์ ๊ทผ์ผ๋ก ์ด์ด์ง ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ ๋ณดํธ ์๊ฑด์ ์๋ฐํฉ๋๋ค. ํนํ ์ฝ๋๊ฐ ์๋ ๊ฐ ๋ฉด๋ฐํ ์กฐ์ฌ๋์ง ์๊ณ ์คํ๋์์ ์ ์์ผ๋ฏ๋ก, ์ด๋ฌํ ์ทจ์ฝ์ ์ ์กฐ๊ธฐ์ ์ธ์ํ๋ ๊ฒ์ด ์ ์ฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์๋ํ๋ ๋ถ์์ ์ ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ ํํ ํ์
์ทจ์ฝ์ ์ ์๋์ผ๋ก ๊ฐ์งํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง, ํนํ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค. SMART TS XL ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค. ์ด ๋๊ตฌ๋ ์ ์ฒด COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒ์ฌํ์ฌ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ์ง์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ SQL ๋ช ๋ น ๊ตฌ๋ฌธ์ ์๋ณํฉ๋๋ค.
๋ฌธ์ ๊ฐ ์๋ ์ค์ ํ์ํ๊ณ ์์ธํ ์ค๋ช ์ ์ ๊ณตํฉ๋๋ค.
Potential SQL Injection Risk: Dynamic SQL constructed via concatenation.
Location: Program CUSTOMER-SEARCH, Line 145.
ํน์ ์ฝ๋ ์ค์ ๊ฐ์กฐํ๋ ๊ฒ ์ธ์๋, SMART TS XL ๋ฐ์ดํฐ ํ๋ฆ ์ถ์ ์ ์ํํ์ฌ USER-NAME์ด ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ญ์ ๋จ๊ณ ์์ด ํฐ๋ฏธ๋ ์ ๋ ฅ์์ ์์ฑ๋์๋์ง ํ์ธํฉ๋๋ค. ์ด๋ฌํ ์ ๋ฐ์ฑ์ ํตํด ํ์ ํ์ํ ๊ณณ์ ์ ํํ ์์ ์์ ์ ์ง์คํ์ฌ ์๋นํ ์๊ฐ์ ์ ์ฝํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ๊ฐ๊ณผํ ๊ฐ๋ฅ์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
์ฝ๋ ๋ฆฌํฉํ ๋ง ๋ฐ ๊ฐํ๋ฅผ ์ํ ๋จ๊ณ
์๋ณ๋๋ฉด, ์์ ๊ณํ์๋ ์์ ํ์ง ์์ ๋์ SQL์ ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์์ ํ ๋งค๊ฐ๋ณ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋์ฒดํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๋ฆฌํฉํ ๋ง๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
EXEC SQL
SELECT * FROM CUSTOMER WHERE NAME = :USER-NAME
END-EXEC.
์ด ๋ณ๊ฒฝ ์ฌํญ์ ๊ตฌํํ๊ธฐ ์ ์ ํ์ ์ํ๋ฒณ ๋ฌธ์๋ง ํ์ฉ๋๋๋ก ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ฐํํ์ต๋๋ค.
IF USER-NAME NOT ALPHABETIC
MOVE 'INVALID INPUT' TO ERROR-MSG
GO TO ERROR-HANDLER
END-IF.
์ด๋ฌํ ์์ ์ ์ ์์ ์ธ ์ ๋ ฅ์ด SQL ๋ช ๋ น ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ฝ์ ๋ฒกํฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ดํ ๊ด๋ฒ์ํ ํ ์คํธ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ธ SQL ์ฝ์ ์๋๋ฅผ ์ฐจ๋จํ๋ฉด์๋ ์ ์์ ์ผ๋ก ์๋ํ๋์ง ๊ฒ์ฆํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌธ์ํํ๋ฉด ํฅํ ๊ฐ๋ฐ์๊ฐ ๋ฆฌํฉํ ๋ง์ด ์ํ๋ ์ด์ ์ ๋ณด์ ๊ฐํ ๋ฐฉ๋ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
์ฌํ ๊ฐ์ ๊ฒฐ๊ณผ: ์ฑ๋ฅ ๋ฐ ๋ณด์ ํฅ์
ํด๊ฒฐ ํ ํ์ ๋ช ํํ ์ด์ ์ ํ์ธํ์ต๋๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก SQL ๋ก์ง์ด ๋ ์ด์ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก ๋ณด์ ์ํ์ด ํฌ๊ฒ ๊ฐ์ํ์ต๋๋ค. ๋ฏผ๊ฐํ ๊ณ ๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ณดํธ๋์ด ์กฐ์ง์ด ๊ท์ ์ ์ค์ํ๊ณ ๊ฐ๋น์ผ ์นจํด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ ๊ฒ์ฌ๋ฅผ ํตํด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์์ ํ์ธํ๊ณ ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์์ ๊ณ ์ํ ํจํด์ด ์ ๋ฐ์ ์ผ๋ก ๊ฐ์ํ์์ ๋ณด์ฌ์ค๋๋ค.
์ฑ๋ฅ๋ ๋ฏธ๋ฌํ๊ฒ ํฅ์๋ฉ๋๋ค. ๋์ SQL ๊ตฌ๋ฌธ์ ์ ๊ฑฐํ๋ฉด ๋ฐํ์์ ๊ฐ๋ณ SQL ๋ฌธ์์ด์ ์ค๋นํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ญ๋๋ค. ๋์ DB2๋ ์ ์ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค. ํ์ ์ฝ๋ ํ์ง์ ๋ํ ์์ ๊ฐ์ ์ป๊ณ , DBXNUMX์์ ์์ฑ๋๋ ์์ธ ๋ณด๊ณ ์๋ฅผ ํตํด ์ด๋ฌํ ๊ฐ์ ์ฌํญ์ ์ ์ฆํ ์ ์์ต๋๋ค. SMART TS XL๋ด๋ถ ๋ณด์ ๊ฑฐ๋ฒ๋์ค์ ์ธ๋ถ ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
ํ์ง, ์์ ๋ฐ ๊ฒ์ฆ์ ๋ํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ทจํจ์ผ๋ก์จ ์กฐ์ง์ ๊ฐ์ฅ ์ค๋๋ COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์กฐ์ฐจ๋ ํ๋์ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ์ง์ํ ์ ์๋ ์์ ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ์์ ์ ์ธ ์์คํ ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
์ง์์ ์ธ ๋ณด์์ ์ํ ์ ๋ต
COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ SQL ์ธ์ ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ ์ผํ์ฑ ์์ ์ด ์๋๋ผ ์ง์์ ์ธ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ๋ ๊ฑฐ์ ์์คํ ์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฌ๊ฒ ๋ฐ์ ํ์ง๋ง, ์๋ก์ด ๊ธฐ๋ฅ, ์ ์ง ๊ด๋ฆฌ ์ ๋ฐ์ดํธ, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์๊ตฌ ์ฌํญ์ ๋ณํ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ํ์ ๋ค์ ์ผ๊ธฐํ ์ ์์ต๋๋ค. ์ง์ ๊ฐ๋ฅํ ๋ณด์์ ์ํด์๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ๊ณ , ์๋ํ๋ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ๊ฐ๋ฐ ํ ์ ๋ฐ์ ๋ณด์์ ์ค์ํ๋ ๋ฌธํ๋ฅผ ์กฐ์ฑํด์ผ ํฉ๋๋ค. ์กฐ์ง์ ์ ์ ์ ์ธ ์ ๋ต์ ์ฑํํจ์ผ๋ก์จ ์ค์ ๋ฉ์ธํ๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์์์ด ๋ณํํ๋ ์ํ์ ๋์ํ์ฌ ๋ณต์๋ ฅ์ ์ ์งํ ์ ์๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋ฉ์ธํ๋ ์ ํ๋ก์ ํธ๋ฅผ ์ํ CI/CD์ ์ ์ ๋ถ์ ํตํฉ
ํ๋ ๊ฐ๋ฐํ์ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ์๋ํํ๊ธฐ ์ํด CI/CD(Continuous Integration and Continuous Delivery) ํ์ดํ๋ผ์ธ์ ์ ์ ๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. COBOL-DB2 ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ ์ ์ฝ๋ ๋ถ์์ ์ด๋ฌํ ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ฉด SQL ์ฝ์ ๊ณต๊ฒฉ์ ๋ํ ๊ฐ๋ ฅํ ๋ฐฉ์ด ์๋จ์ ์ ๊ณตํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ ๊ท ๋๋ ์์ ๋ ์ฝ๋์์ ์ํํ ํจํด์ ์๋์ผ๋ก ๊ฒ์ฌํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ๋ณด์ ๊ธฐ์ค์ ๊ฐํํฉ๋๋ค.
์ผ๋ฐ์ ์ธ CI/CD ์ํฌํ๋ก์๋ ์ฝ๋ ์ปค๋ฐ ํ ์ ์ ๋ถ์์ ์คํํ๋ ๋จ๊ณ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
step:
name: Static Code Analysis
command: run-analysis --target=COBOL
๋ถ์ ๊ฒฐ๊ณผ SQL ์ฝ์ ์ํ์ด ๋ฐ๊ฒฌ๋๋ฉด ํ์ดํ๋ผ์ธ์ด ์ค๋จ๋์ด ์์ ํ์ง ์์ ์ฝ๋์ ์ถ๊ฐ ํ์ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ณ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๊ด๊ณ์์ด ํ ์ ์ฒด์ ๊ฑธ์ณ ๋ณด์์ ์ผ๊ด๋๊ฒ ๊ฐํํฉ๋๋ค. ๋ํ ์ทจ์ฝ์ ์ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ์ฌ ์์ ๋น์ฉ์ ์ ๊ฐํ๊ณ , ๋ณด์ ๊ฐ๋ฐ์ ์ผ์์ ์ธ ์ ๋ฌด ํ๋ก์ธ์ค์ ํ์์ ์ธ ๋ถ๋ถ์ผ๋ก ๋ง๋ค์ด์ค๋๋ค.
๋ ๊ฑฐ์ ์ฝ๋์ ์ ๊ธฐ ๋ณด์ ๊ฒ์ฌ ์์ฝ
๋น๋ฒํ ๋ณ๊ฒฝ์ด ์๋๋ผ๋ ๋ ๊ฑฐ์ COBOL-DB2 ์์คํ ์ ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฒํ ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ๋น์ฆ๋์ค ์๊ตฌ์ ๋ฐ๋ผ ๋งค์ฃผ, ๋งค์ ๋๋ ๋ถ๊ธฐ๋ณ๋ก ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ข ํฉ์ ์ธ ๊ฒ์ฌ๋ฅผ ์ํํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ํตํด ์์คํ ์ ๋ฐ์ดํธ, ๊ตฌ์ฑ ๋ณ๊ฒฝ ๋๋ ์งํํ๋ ์ํ ๋ชจ๋ธ๋ก ์ธํด ๋ฐ์ํ๋ ์๋ก์ด ์ํ์ ํ์ ํ ์ ์์ต๋๋ค.
์ ๊ธฐ์ ์ธ ์ ๊ฒ์ ํตํด ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณด์ ํ์ธ์ ๋ํ ๊ณผ๊ฑฐ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ํ์ SQL ์ฝ์ ์ํ ํ์ง ๋ฐ ํด๊ฒฐ ๊ฑด์์ ๊ฐ์ ์งํ๋ฅผ ์ถ์ ํ์ฌ ๊ฐ์ฌ์, ๊ฒฝ์์ง, ๊ท์ ๊ธฐ๊ด์ ์ง์์ ์ธ ๊ฐ์ ์ ์ ์ฆํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์น์ ์ ์งํจ์ผ๋ก์จ ์กฐ์ง์ ์๋ฌด๋ฆฌ ์ค๋๋๊ณ ์์ ์ ์ธ ์์คํ ์ด๋ผ๋ ๋ณด์ ์ฌ๊ฐ์ง๋์ ๋น ์ง์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์์ฝ๋ ๊ฒ์ฌ๋ ์ง์ ๊ณต์ ์๋ ๋์์ด ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ณด๊ณ ์๋ฅผ ๊ฒํ ํ์ฌ ์ผ๋ฐ์ ์ธ ์ฝ๋ฉ ์ค๋ฅ๋ฅผ ํ์ ํ๊ณ , ๋ณด์ ๊ดํ์ ๊ฐํํ๋ฉฐ, ๋ณด์์ ์์ ์ ๋ฌธ๊ฐ์ ์ ๋ด ์ ๋ฌด๊ฐ ์๋ ๊ณต๋์ ์ฑ ์์ผ๋ก ์ฌ๊ธฐ๋ ๋ฌธํ๋ฅผ ์กฐ์ฑํ ์ ์์ต๋๋ค.
์ฃผ์ ์ํ์ ์ธ์ํ๊ณ ์ํํ๊ธฐ ์ํ ๊ต์ก ๊ฐ๋ฐ ํ
๊ธฐ์ ๋ง์ผ๋ก๋ ์ํํธ์จ์ด๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ ์ ์์ต๋๋ค. ์ง์์ด ํ๋ถํ ์ฌ๋๋ค์ด ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋ง์ ๋๋ค. COBOL-DB2 ๊ฐ๋ฐ์๋ค์ด SQL ์ฝ์ ๊ณต๊ฒฉ์ ์๋ ๋ฐฉ์, ๋ ๊ฑฐ์ ํจํด์ ์ํ์ฑ, ๊ทธ๋ฆฌ๊ณ ์์ ํ ๋์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋๋ก ๋๊ธฐ ์ํด์๋ ๊ต์ก์ ๋ํ ํฌ์๊ฐ ํ์์ ์ ๋๋ค. ํนํ ์์ญ ๋ ์ ๊ฒฝ๋ ฅ์ ๊ฐ์ง ๊ฐ๋ฐ์๋ค์ด ์ต์ ๋ณด์ ๊ดํ์ ๋ํ ๊ฒฝํ์ด ๋ถ์กฑํ ๋ฉ์ธํ๋ ์ ํ๊ฒฝ์์๋ ๋์ฑ ์ค์ํฉ๋๋ค.
๊ต์ก ์ธ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
- ์์ ํ์ง ์์ ๋์ SQL ํจํด ์๋ณ
- ํธ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ ๊ตฌํ
- ์ ๋ ฅ์ ํจ๊ณผ์ ์ธ ๊ฒ์ฆ ๋ฐ ์ ๋ฆฌ
- DB2 ๊ถํ ๋ถ์ฌ์ ์ต์ ๊ถํ ์์น ์ดํด
์ํฌ์, ์ฝ๋ ๊ฒํ ์ธ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ๋ฌธ์ ๊ฐ์ด๋๋ ํ ์ ์ฒด์ ๋ณด์ ์ธ์์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ํ์ ์กฐ๊ธฐ์ ์ธ์งํ ์ ์๊ฒ ๋๋ฉด ๋ ๋์ ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ผ๋ก ๋ ์์ ํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๊ธฐ์ฌํ๊ฒ ๋ฉ๋๋ค.
ํ ์ ์ฒด์์ ์์ ํ ์ฝ๋ฉ ํ์ค ์ ์ง
COBOL-DB2 ํ๋ก์ ํธ๋ ์ฌ๋ฌ ํ๊ณผ ์ฅ๊ธฐ์ ์ผ๋ก ์ด์๋๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ์ผ๊ด๋ ๋ณด์ ํ์ค์ ์ ์งํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์กฐ์ง์ ์์ ํ SQL ์ฌ์ฉ, ์ ๋ ฅ ๊ฒ์ฆ, ๋์ SQL ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ถํ ๊ตฌ์ฑ์ ๋ํ ๋ช ํํ ์ง์นจ์ ์๋ฆฝํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ํ์ค์ ๋ฌธ์ํํ๊ณ , ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๋ฉฐ, ์งํํ๋ ์ํ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ์ํ๋๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ํ์ค์ ์ํํ๋ ค๋ฉด ๊ฐ๋ฐ, ๋ณด์ ๋ฐ ์ด์ ํ ๊ฐ์ ํ์ ์ด ํ์์ ์ ๋๋ค. ์ ๊ธฐ์ ์ธ ์ฝ๋ ๊ฒํ , CI/CD ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ์ ์ ๋ถ์ , ๊ทธ๋ฆฌ๊ณ ๊ณต์ ์ง์ ์ ์ฅ์๋ ๋ชจ๋ ํ ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์์ ํ ์ฝ๋ฉ ๊ดํ์ ํ์คํํจ์ผ๋ก์จ ์กฐ์ง์ ํ ๊ฐ์ ์ผ๊ด์ฑ ์๋ ์ ๊ทผ ๋ฐฉ์์ด๋ ์ง์ ๊ฒฉ์ฐจ๋ก ์ธํด ์ทจ์ฝ์ ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
์๊ฐ์ด ์ง๋๋ ์ด๋ฌํ ์ ๋ต์ ์ ์งํ๋ฉด ๊ฐ์ฅ ๋ณต์กํ๊ณ ์๋ฌด ์ํ์ ์ค์ํ COBOL-DB2 ์์คํ ์กฐ์ฐจ๋ SQL ์ฃผ์ ๊ณต๊ฒฉ์ ๋ง๊ณ ์์ ํ๊ณ ์์ ์ ์ผ๋ก ๋น์ฆ๋์ค ๋ชฉํ๋ฅผ ๊ณ์ ์ง์ํ ์ ์์ต๋๋ค.
SQL ์ฃผ์ ์ด ๋ฉ์ธํ๋ ์์์ ์ง์์ ์ธ ์ํ์ผ๋ก ๋จ์ ์๋ ์ด์
COBOL-DB2 ์ ํ๋ฆฌ์ผ์ด์ ์ SQL ์ธ์ ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ ์ฃผ์ ์ด์์ ์ํด ๋ฉ์ธํ๋ ์ ์์คํ ์ ์์กดํ๋ ์กฐ์ง์๊ฒ ํ์์ ์ธ ์ฑ ์์ ๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์ ์ํ, ๋ณดํ, ์ ๋ถ ๋ฐ ์๋ฃ ๋ถ์ผ์ ํต์ฌ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํ๊ฒฝ์ ๋ ธํํ์ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์ ๋๋ก ์ดํด๋๊ธฐ ์ ์ ์์ฑ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋์ SQL ์์ฑ, ์๋ ๋ฌธ์์ด ์ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ ๋ถ์ถฉ๋ถํ ์ ๋ ฅ ๊ฒ์ฆ์ ๊ณต๊ฒฉ์๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์์ํค๊ณ ์๋น์ค๋ฅผ ์ค๋จ์ํฌ ์ ์๋ ์ฌ๊ฐํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
SQL ์ธ์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด SQL ๋ช ๋ น์ ์์ฑํ๊ณ ์คํํ๋ ๋ฐฉ์์ ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ์ง์์ ์ธ ์ํ์ผ๋ก ๋จ์ ์์ต๋๋ค. ์ ๋ ฅ ์ฒ๋ฆฌ ๊ณผ์ ์์ ์ฌ์ํ ์ค์๋ผ๋ ์ฌ๊ฐํ ์นจํด๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋ด์ฅ๋ ๋ณดํธ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ต์ ํ๋ซํผ๊ณผ ๋ฌ๋ฆฌ, COBOL-DB2 ์์คํ ์ ๊ฐ๋ฐ์๊ฐ ๋ณด์์ ์๋์ผ๋ก ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ํ์ ํด๊ฒฐํ๋ ค๋ฉด ์์ ํ ์ฝ๋ฉ ๊ดํ, ์๊ฒฉํ ์ ๋ ฅ ๊ฒ์ฆ, ์ต์ ๊ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ๊ธฐ์ ์ธ ์ฝ๋ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ์กฐ์น๋ฅผ ๊ฐ๋ฐ ๋ฌธํ์ ๋ฐ์ํจ์ผ๋ก์จ ๊ธฐ์ ์ ์ทจ์ฝ์ ์ ์์ฒ์ ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
์๋ํ๋ ์ ์ ๋ถ์์ ์ด๋ฌํ ๋ ธ๋ ฅ์ ํ์์ ์ธ ๋ฐฉ์ด ๊ณ์ธต์ ์ถ๊ฐํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. SMART TS XL ๊ฐ๋ฐํ์ด ๋๊ท๋ชจ์ ๋ณต์กํ COBOL-DB2 ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ฒ์ฌํ์ฌ SQL ์ธ์ ์ ์ํ์ ํ์ ํ๊ณ , ์์ ํ์ง ์์ ์ฝ๋ฉ ํจํด์ ์๋ณํ๋ฉฐ, ๋ฐ์ดํฐ ํ๋ฆ์ ์ถ์ ํ์ฌ ์๋ ๊ฒํ ์์ ๋์น ์ ์๋ ์ทจ์ฝ์ ์ ํ์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ๊ณผ ์ ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ ์ํฌํ๋ก์ ์๋ํ๋ ๋ถ์์ ํตํฉํจ์ผ๋ก์จ, ๊ธฐ์ ์ ์๋ก์ด ์ํ์ด ์ ์ฉ๋๊ธฐ ์ ์ ๊ฐ์งํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์์ธ ๋ณด๊ณ ๋ฐ ์๋ดํ ์์ ๊ธฐ๋ฅ์ ํตํด ํ์ ์ทจ์ฝ์ ์ ์ ํํ ์์น์ ํจ๊ณผ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ ํ ์ ์์ต๋๋ค.
์ง์์ ์ธ ๋ณด์์ ํ์ฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ๋ฏธ๋์ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๋ ํ๋ก์ธ์ค์ ์ต๊ด์ ๊ตฌ์ถํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์กฐ์ง์ ์ ๊ธฐ์ ์ธ ์ ๊ฒ, ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ ๊ต์ก์ ์ฐ์ ์ํ์ฌ ์ฅ๊ธฐ์ ์ธ ๋ณด์ ํ์ธ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ์ฒด๊ณ์ ์ธ ์๋ ์์ ๊ณผ ๊ณ ๊ธ ์๋ ๋ถ์์ ๊ฒฐํฉํ๋ฉด ์๋ฌด๋ฆฌ ๋ณต์กํ๊ณ ๋ ๊ฑฐ์ ๋ฆฌ์์ค๊ฐ ๋ง์ COBOL-DB2 ํ๊ฒฝ์ด๋ผ๋ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณต์๋ ฅ์ ๊ฐํํ์ฌ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ , ๊ท์ ์ค์๋ฅผ ์ ์งํ๋ฉฐ, ํฅํ ์๋ ๊ฐ ๊ณ ๊ฐ ์ ๋ขฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.


