top

๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

IT/MySQL

MySQL ๋™์  SQL

๋™์  SQL

๋™์  SQL์€ ๋ฏธ๋ฆฌ ์ฟผ๋ฆฌ๋ฌธ์„ ์ค€๋น„ํ•œ ํ›„์— ๋‚˜์ค‘์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. PREPARE๊ณผ EXECUTE๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.


PREPARE    ์ฟผ๋ฆฌ์ด๋ฆ„    FROM    '์ฟผ๋ฆฌ๋ฌธ';    -- ์ฟผ๋ฆฌ๋ฌธ์„ ์ค€๋น„๋งŒ ํ•˜๊ณ  ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ

EXECUTE    ์ฟผ๋ฆฌ์ด๋ฆ„    [USING @๋ณ€์ˆ˜];    -- ์ฟผ๋ฆฌ๋ฌธ์ด ์‹คํ–‰๋จ




PREPARE๊ณผ EXECUTE์˜ ํ˜•์‹์€ ์œ„์™€ ๊ฐ™๋‹ค. ์ฟผ๋ฆฌ ์ด๋ฆ„์€ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  PREPARE์— ์žˆ๋Š” '์ฟผ๋ฆฌ๋ฌธ'์€ EXECUTE ๋ฅผ ๋งŒ๋‚˜๋Š” ์ˆœ๊ฐ„์— ์‹คํ–‰๋œ๋‹ค. USING @๋ณ€์ˆ˜๋Š” '์ฟผ๋ฆฌ๋ฌธ'์— ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ™์€ ๊ฒƒ. ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.



1
2
3
4
SET @var = 1;
 
PREPARE myQuery FROM 'INSERT INTO myTable VALUES(NULL, ?)';
EXECUTE myQuery USING @var;
cs

'INSERT INTO myTable VALUES(NULL, ?)'์€ myTable์˜ ๊ฐ ์—ด์— null๊ณผ ?์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. '?'๋Š” ํ–ฅํ›„ EXECUTE์—์„œ ์ž…๋ ฅ๋  ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ EXECUTE myQuery USING @var; ๋Š” ?์— var๋ฅผ ๋Œ€์ž…ํ•ด์„œ myQurey๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ INSERT INTO myTable VALUES(NULL, var)๊ฐ€ ๋˜๋Š” ๊ฒƒ.


์‚ฌ์‹ค EXECUTE๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•œ ํ›„์—๋Š” DEALLOCATE PREPARE๋กœ ๋ฌธ์žฅ์„ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์ž.
1
2
3
4
5
SET @var = 1;
 
PREPARE    myQuery FROM 'INSERT INTO myTable VALUES(NULL, ?)';
EXECUTE myQuery USING @var;
DEALLOCATE PREPARE myQuery;
cs