AWAIT(Snowflake Scripting)ยถ
์คํ ์ค์ธ ๋ชจ๋ ๋น๋๊ธฐ ํ์ ์์ ์ด ์๋ฃ๋๊ฑฐ๋ RESULTSET ๋ฅผ ์ํด ์คํ ์ค์ธ ํน์ ๋น๋๊ธฐ ํ์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ชจ๋ ์์ ์ด ์๋ฃ๋๊ฑฐ๋ ํน์ ์์ ์ด ์๋ฃ๋๋ฉด ๊ฐ๊ฐ ๋ฐํํฉ๋๋ค.
AWAIT ๋ ํธ์ถ ์ฐจ๋จ์ ๋๋ค. AWAIT ๋ฌธ์ ์ฌ์ฉํ์ฌ AWAIT ํธ์ถ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ์ฝ๋๊ฐ ์คํ๋์ง ์๋๋ก ์ฐจ๋จํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
์ด Snowflake Scripting ๊ตฌ๋ฌธ์ Snowflake Scripting ๋ธ๋ก ๋ด์์๋ง ์ ํจํฉ๋๋ค.
- ์ฐธ๊ณ ํญ๋ชฉ:
๊ตฌ๋ฌธยถ
AWAIT { ALL | <result_set_name> };
์ฌ๊ธฐ์
ALL
์ ์ฅ ํ๋ก์์ ๋ AWAIT ํธ์ถ ์ ์ ์์๋ ๋ชจ๋ ๋น๋๊ธฐ ํ์ ์์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
result_set_name
์ ์ฅ ํ๋ก์์ ๋ ์ง์ ๋ RESULTSET ์ ๋ํด ์คํ ์ค์ธ ๋น๋๊ธฐ ํ์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ฌ์ฉ๋ฒ ๋ ธํธยถ
๋น๋๊ธฐ ํ์ ์์ ์ ์ฟผ๋ฆฌ์ ASYNC ํค์๋๊ฐ ์ง์ ๋๋ฉด ๋ง๋ค์ด์ง๋๋ค. ์์ธํ ๋ด์ฉ์ ๋น๋๊ธฐ ํ์ ์์ ์ผ๋ก ์์ ํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ฟผ๋ฆฌ์ ASYNC ํค์๋๊ฐ ์ง์ ๋๋ฉด ์ ์ฅ ํ๋ก์์ ๋ AWAIT ๋ฌธ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋๊น์ง ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ํ์ ์์ ์ ์คํํ๋ ๊ฒฝ์ฐ โ์คํ ํ ๋ฌด์โ๋ ์ง์๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ฅ ํ๋ก์์ ๊ฐ ์๋ฃ๋ ๋ ์์ง ์คํ ์ค์ธ ํ์ ์์ ์ด ์์ผ๋ฉด ํ์ ์์ ์ ์๋์ผ๋ก ์ทจ์๋ฉ๋๋ค.
Snowflake Scripting์ ์ ์ฅ ํ๋ก์์ ์ ์ฝ๋์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต ๋ณ์๋ฅผ ์ง์ํฉ๋๋ค.
์ด๋ฌํ ๋ณ์๋ ๋น๋๊ธฐ ํ์ ์์ ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค.
SQLID ๋ณ์๋ ๋น๋๊ธฐ ํ์ ์์ ์ด ์์ฑ๋ ์งํ ๋น๋๊ธฐ ํ์ ์์ ์ ์ง์ ๋ ์ฟผ๋ฆฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค๋ฅ๋ฅผ ์ผ์ผํจ ๋น๋๊ธฐ ํ์ ์์ ๊ณผ ๊ด๋ จ๋ AWAIT ๋๋ AWAIT ALL ๋ฌธ์ด ์คํ๋ ํ ๋ค์ ์์ธ ์ฒ๋ฆฌ์ฉ ๊ธฐ๋ณธ ์ ๊ณต ๋ณ์ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
SQLCODE
SQLERRM
SQLSTATE
AWAIT ALL ๋ฌธ์ด ์ฌ๋ฌ ๋น๋๊ธฐ ํ์ ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ธฐ๋ณธ ์ ๊ณต ๋ณ์๋ ์ฒซ ๋ฒ์งธ ์คํจํ ๋น๋๊ธฐ ํ์ ์์ ์ ๋ํ ์ ๋ณด๋ฅผ ์บก์ฒํฉ๋๋ค.
DML ๋ช ๋ น์ ์ํฅ์ ๋ฐ๋ ํ ์ ์ ๊ด๋ จ๋ ๋ค์ ๊ธฐ๋ณธ ์ ๊ณต ๋ณ์๋ RESULTSET ์คํ์ ๋ํ ๋น๋๊ธฐ ํ์ ์์ ๊ณผ ์ฐ๊ฒฐ๋ AWAIT ๋ฌธ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
SQLROWCOUNT
SQLFOUND
SQLNOTFOUND
์ด๋ฌํ ๋ณ์๋ AWAIT ALL ๋ฌธ์ด ์คํ๋ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ํ์ ์์ ์ด ์คํจํ๋ฉด ๋น๋๊ธฐ ์์ ๊ณผ ์ฐ๊ฒฐ๋ AWAIT ๋๋ AWAIT ALL ๋ฌธ์ด ์ค๋ฅ์ ํจ๊ป ์คํจํ๊ณ ์ ์ฅ ํ๋ก์์ ์ ์คํ์ด ์ค์ง๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ ์ ์ฅ ํ๋ก์์ ๋ ์คํ์ด AWAIT ๋ฌธ์ ๋๋ฌํ๋ฉด ์คํจํ๊ณ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
BEGIN LET res RESULTSET := ASYNC (SELECT * FROM invalid_table); AWAIT res; END;
002003 (42S02): Uncaught exception of type 'STATEMENT_ERROR' on line 2 at position 4 : SQL compilation error: Table 'INVALID_TABLE' does not exist or not authorized.
์ยถ
๋ชจ๋ ๋น๋๊ธฐ ํ์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
AWAIT ALL;
RESULTSET ์ ๋ํด ์คํ ์ค์ธ ๋น๋๊ธฐ ํ์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
AWAIT my_result_set;
๋ ๋ง์ ์๋ ๋น๋๊ธฐ ํ์ ์์ ์ฌ์ฉ ์์ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.