REPEAT(Snowflake Scripting)ยถ

REPEAT ๋ฃจํ”„๋Š” ์ง€์ •๋œ ์กฐ๊ฑด์ด true์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. REPEAT ๋ฃจํ”„๋Š” ๋ฃจํ”„์˜ ๋์—์„œ ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” REPEAT ๋ฃจํ”„์˜ ๋ณธ๋ฌธ์ด ํ•ญ์ƒ ์ ์–ด๋„ ํ•œ ๋ฒˆ ์‹คํ–‰๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํ”„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฃจํ”„ ์ž‘์—…ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ 

์ด Snowflake Scripting ๊ตฌ๋ฌธ์€ Snowflake Scripting ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ:

BREAK, CONTINUE

๊ตฌ๋ฌธยถ

REPEAT
    <statement>;
    [ <statement>; ... ]
UNTIL ( <condition> )
END REPEAT [ <label> ] ;
Copy

์—ฌ๊ธฐ์„œ:

statement

๋ฌธ์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

condition

BOOLEAN์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

label

์„ ํƒ์  ๋ ˆ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ด๋ธ”์€ BREAK ๋˜๋Š” CONTINUE ๋ฌธ์˜ ์ด๋™ ๋Œ€์ƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ”์€ ์˜ค๋ธŒ์ ํŠธ ์‹๋ณ„์ž ์˜ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ• ๋…ธํŠธยถ

  • REPEAT ์—์„œ ์กฐ๊ฑด์„ ๊ด„ํ˜ธ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ์˜ˆ: REPEAT ( <์กฐ๊ฑด> ).

  • condition ์ด TRUE๋กœ ํ‰๊ฐ€๋˜์ง€ ์•Š๊ณ  ๋ฃจํ”„์— BREAK ๋ช…๋ น(๋˜๋Š” ์ด์™€ ๋™๋“ฑํ•œ ํ•ญ๋ชฉ)์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋˜๊ณ  ํฌ๋ ˆ๋”ง์„ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค.

  • condition ์ด NULL์ด๋ฉด FALSE๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

  • ๋ฃจํ”„๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์„ ํฌํ•จํ•˜๋Š” BEGIN โ€ฆ END ๋ธ”๋ก ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆยถ

์ด ์˜ˆ์—์„œ๋Š” ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. (์ด๋Š” ๋น„ํšจ์œจ์ ์ธ ์†”๋ฃจ์…˜์ด์ง€๋งŒ, ๋ฃจํ•‘์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.)

CREATE PROCEDURE power_of_2()
RETURNS NUMBER(8, 0)
LANGUAGE SQL
AS
$$
DECLARE
    counter NUMBER(8, 0);      -- Loop counter.
    power_of_2 NUMBER(8, 0);   -- Stores the most recent power of 2 that we calculated.
BEGIN
    counter := 1;
    power_of_2 := 1;
    REPEAT
        power_of_2 := power_of_2 * 2;
        counter := counter + 1;
    UNTIL (counter > 8)
    END REPEAT;
    RETURN power_of_2;
END;
$$;
Copy

๋‹ค์Œ์€ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
|        256 |
+------------+
Copy