software engineering/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์„ค๊ณ„

[DB] ํ•จ์ˆ˜์™€ ํ”„๋กœ์‹œ์ €

jjingle 2023. 11. 20. 14:53

์ปค์„œ (Cursor)

๋ ˆ์ฝ”๋“œ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๊ฐœ๋ณ„์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์˜ ํ™•์žฅ

 

 

*๋ช…์‹œ์  ์ปค์„œ(Explicit Cursor)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์ ‘๊ทผํ•ด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค์„œ๋ผ๊ณ ํ•˜๋ฉด ๋ช…์‹œ์  ์ปค์„œ๋ฅผ ๋งํ•จ
  • ์ฒ˜๋ฆฌ์ˆœ์„œ
    1. DECLARE(์ปค์„œ ์„ ์–ธ) : ์ปค์„œ์— ์ด๋ฆ„์„ ์ฃผ๊ณ , ์ปค์„œ๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ์ฟผ๋ฆฌ ์ •์˜
    2. OPEN(์ปค์„œ ์—ด๊ธฐ) : ์ปค์„œ๋กœ ์ •์˜๋œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰
    3. FETCH(ํŒจ์น˜) : ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์ ‘๊ทผ
    4. CLOSE(์ปค์„œ๋‹ซ๊ธฐ) : ์ปค์„œ๋ฅผ ๋‹ซ๊ณ  ์ž์›์„ ๋ฐ˜ํ™˜

 

 

* ๋ฌต์‹œ์  ์ปค์„œ(Implicit Cursor)

  • ์˜ค๋ผํด ๋‚ด๋ถ€์—์„œ ๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€์ ์ธ ์ปค์„œ
  • SQL ์ปค์„œ : ํ•ญ์ƒ ์ตœ๊ทผ์— ์‹คํ–‰๋œ SQL ๋ฌธ์žฅ์— ๋Œ€ํ•œ ์ปค์„œ
  • 'SQL'์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์†์„ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
  • DML(INSERT, UPDATE, DELETE) ๋ฌธ์žฅ์— ๋Œ€ํ•ด์„œ ์—ด๋ฆผ

PL/SQL ์„œ๋ธŒํ”„๋กœ๊ทธ๋žจ(subprogram)

ํ”„๋กœ๊ทธ๋žจ ๋ธ”๋ก์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉ
  • ์ €์žฅ ํ”„๋กœ์‹œ์ €(stored procedure)
  • ํ•จ์ˆ˜(function)
  • ํŒจํ‚ค์ง€(package)
  • ํŠธ๋ฆฌ๊ฑฐ(trigger)

 

์ €์žฅ ํ”„๋กœ์‹œ์ €(Stored Procedure)

- ์ผ๋ จ์˜ PL/SQL ๋ฌธ์žฅ์„ ์‚ฌ์ „์— ์ž‘์„ฑํ•˜๊ณ  ์ปดํŒŒ์ผํ•œ ๋‹ค์Œ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์ €์žฅํ•ด๋†“์€ ํ”„๋กœ์‹œ์ €
- (์„ ํƒ์ ) ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์Œ
- (์„ ํƒ์ ) ๊ฐ’์„ ๋Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Œ

 


ํ•จ์ˆ˜(Function)

- ํ•จ์ˆ˜๋Š” ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ˜ธ์ถœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ์ง‘ํ•ฉ์— ํ†ตํ•ฉํ•ด ๋„ฃ์„ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
- DBMS๋Š” ๋ฌธ์ž์—ด ํ•จ์ˆ˜, ์ˆ˜ํ•™ ํ•จ์ˆ˜, ์ง‘๊ณ„ ํ•จ์ˆ˜ ๋“ฑ ๋งŽ์€ ํŽธ๋ฆฌํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณต
- ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ

 

 

* ์ €์žฅํ”„๋กœ์‹œ์ €์™€์˜ ์ฐจ์ด

  • RETURN ๋ฌธ์— ์˜ํ•ด์„œ ํŠน์ •๊ฐ’์„ ๋Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ
  • ๊ณ„์‚ฐ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝX
  • ์ €์žฅ ํ”„๋กœ์‹œ์ €๋Š” EXEC๋กœ ์‹คํ–‰๋˜์ง€๋งŒ, ํ•จ์ˆ˜๋Š” ์ฃผ๋กœ SELECT๋ฌธ์— ํฌํ•จ๋˜์–ด ์‹คํ–‰๋จ