AWAIT(Snowflake Scripting)ยถ

์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ๋น„๋™๊ธฐ ํ•˜์œ„ ์ž‘์—… ์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ RESULTSET ๋ฅผ ์œ„ํ•ด ์‹คํ–‰ ์ค‘์ธ ํŠน์ • ๋น„๋™๊ธฐ ํ•˜์œ„ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ํŠน์ • ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ๊ฐ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

AWAIT ๋Š” ํ˜ธ์ถœ ์ฐจ๋‹จ์ž…๋‹ˆ๋‹ค. AWAIT ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ AWAIT ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

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

CANCEL

๊ตฌ๋ฌธยถ

AWAIT { ALL | <result_set_name> };
Copy

์—ฌ๊ธฐ์„œ

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;
    
    Copy
    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;
Copy

RESULTSET ์— ๋Œ€ํ•ด ์‹คํ–‰ ์ค‘์ธ ๋น„๋™๊ธฐ ํ•˜์œ„ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

AWAIT my_result_set;
Copy

๋” ๋งŽ์€ ์˜ˆ๋Š” ๋น„๋™๊ธฐ ํ•˜์œ„ ์ž‘์—… ์‚ฌ์šฉ ์˜ˆ์‹œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.