์ž๋™ ๋ถ„์„์„ ํ†ตํ•œ COBOL-DB2์˜ SQL ์ฃผ์ž… ์œ„ํ—˜ ์ œ๊ฑฐ

์ž๋™ ๋ถ„์„์„ ํ†ตํ•œ COBOL-DB2์˜ SQL ์ฃผ์ž… ์œ„ํ—˜ ์ œ๊ฑฐ

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 ์ธ์ ์…˜ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณต์›๋ ฅ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ์ค‘์š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ , ๊ทœ์ • ์ค€์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ํ–ฅํ›„ ์ˆ˜๋…„๊ฐ„ ๊ณ ๊ฐ ์‹ ๋ขฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.