REPEAT(Snowflake Scripting)ยถ
REPEAT
๋ฃจํ๋ ์ง์ ๋ ์กฐ๊ฑด์ด true์ผ ๋๊น์ง ๋ฐ๋ณต๋ฉ๋๋ค. REPEAT
๋ฃจํ๋ ๋ฃจํ์ ๋์์ ์กฐ๊ฑด์ ํ
์คํธํฉ๋๋ค. ์ด๋ REPEAT
๋ฃจํ์ ๋ณธ๋ฌธ์ด ํญ์ ์ ์ด๋ ํ ๋ฒ ์คํ๋จ์ ์๋ฏธํฉ๋๋ค.
๋ฃจํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฃจํ ์์ ํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ฐธ๊ณ
์ด Snowflake Scripting ๊ตฌ๋ฌธ์ Snowflake Scripting ๋ธ๋ก ๋ด์์๋ง ์ ํจํฉ๋๋ค.
๊ตฌ๋ฌธยถ
REPEAT
<statement>;
[ <statement>; ... ]
UNTIL ( <condition> )
END REPEAT [ <label> ] ;
์ฌ๊ธฐ์:
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;
$$;
๋ค์์ ์ ์ฅ ํ๋ก์์ ๋ฅผ ์คํํ ๊ฒฐ๊ณผ์ ๋๋ค.
CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
| 256 |
+------------+