Post

๐Ÿ“Ÿ SQL & Database (07) - ํ”„๋กœ์‹œ์ €(stored procedure), DECLARE



ํ•™์Šตํ™˜๊ฒฝ : Windows, MariaDB, DBeaver

stored procedure

์ €์žฅ ํ”„๋กœ์‹œ์ €

  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” sql๋ฌธ์„ ์ €์žฅํ•ด๋‘๋Š” ์šฉ๋„
  • ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ๋А๋‚Œ

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๋ฐ ์˜ˆ์‹œ(DBeaver)

    procedure๋ฅผ ์ƒ์„ฑํ•˜๋Š” sql๋ฌธ์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ , DBeaver์™€ ๊ฐ™์€ dbํˆด์— ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์ข€ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค

    image
    ์ง€๊ธˆ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…์˜ ํ•˜์œ„ ํด๋”๋ฅผ ๋ณด๋ฉด procedure ํด๋”๊ฐ€ ์žˆ์Œ!
    create new procedure ํ•ด์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ”„๋กœ์‹œ์ €๋ช…์œผ๋กœ ์ƒˆ ํ”„๋กœ์‹œ์ €๋ฅผ ์ƒ์„ฑ

    image
    source๋ฉ”๋‰ด์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ํ”„๋กœ์‹œ์ €๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ํ…œํ”Œ๋ฆฟ?์ฒ˜๋Ÿผ ์ž๋™์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š”๋ฐ BEGIN๊ณผ END ์‚ฌ์ด์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋จ


    ์ €์žฅํ•˜๊ณ  ๋‚˜๋ฉด ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ์ด ์™„๋ฃŒ๋œ ๊ฒƒ
    ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ƒ.

    CALLย ย  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช… . ํ”„๋กœ์‹œ์ €๋ช…ย ย 

    image
    ์•„์ฃผ ๊ฐ„๋‹จ~

    ๊ทธ๋ฆฌ๊ณ 
    ํ”„๋กœ์‹œ์ € ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค

DECLARE

  • procedure์•ˆ์—์„œ ๋ณ€์ˆ˜ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ
  • procedure๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ณ€์ˆ˜๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง„๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜๋ผ๊ณ  ๋ณด๋ฉด ๋จ

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•

    CREATEย ย  PROCEDUREย ย  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช… . ํ”„๋กœ์‹œ์ €๋ช…ย ย 
    BEGIN
    ย ย ย ย ย ย ย ย DECLAREย ย  ๋ณ€์ˆ˜1ย ย  INTย ย ;
    ย ย ย ย ย ย ย ย DECLAREย ย  ๋ณ€์ˆ˜2ย ย  VARCHAR(100)ย ย ;
    ย ย ย ย ย ย ย ย DECLAREย ย  ๋ณ€์ˆ˜3ย ย  INTย ย  DEFAULTย ย  ์ดˆ๊ธฐ๊ฐ’ย ย ;
    ย ย ย ย ย ย ย ย SETย ย  ๋ณ€์ˆ˜1ย ย  = ๋ฐ์ดํ„ฐย ย ;
    ย ย ย ย ย ย ย ย SELECTย ย  ๋ณ€์ˆ˜1, ๋ณ€์ˆ˜2, ๋ณ€์ˆ˜3ย ย ;
    ENDย ย 


    ์•„๊นŒ ํ”„๋กœ์‹œ์ € ์ƒ์„ฑํ•  ๋•Œ ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š”๋ฐ DECLARE ๋ฌธ์€ BEGIN ๋ฐ”๋กœ ๋‹ค์Œ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค
    DEFAULT๋Š” ๋ณ€์ˆ˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•  ๋Œ€ ์‚ฌ์šฉ (์„ ํƒ)
    SET์€ ๋ณ€์ˆ˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

  • ์˜ˆ์‹œ

    image

    • ๊ฒฐ๊ณผ
      image
This post is licensed under CC BY 4.0 by the author.