RETURN(Snowflake Scripting)ยถ

์ง€์ •๋œ ์‹์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

์ฐธ๊ณ 

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

๊ตฌ๋ฌธยถ

RETURN <expression>;
Copy

์—ฌ๊ธฐ์„œ

expression

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

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

  • RETURN ๋ฌธ์€ ๋‹ค์Œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    • ์ต๋ช… ๋ธ”๋ก.

  • RETURN ๋ฌธ์€ ๋‹ค์Œ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

    • ํ…Œ์ด๋ธ”. RETURN ๋ฌธ์—์„œ TABLE(...) ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ๋ธ”๋ก์ด ์ €์žฅ ํ”„๋กœ์‹œ์ €์— ์žˆ๋Š” ๊ฒฝ์šฐ CREATE PROCEDURE ๋ฌธ์—์„œ RETURNS TABLE... ์ ˆ๋„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      ์ฐธ๊ณ 

      ํ˜„์žฌ, RETURNS TABLE(...) ์ ˆ์—์„œ๋Š” GEOGRAPHY ๋ฅผ ์—ด ์œ ํ˜•์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ƒ์„ฑํ•˜๋“  ์ต๋ช… ํ”„๋กœ์‹œ์ €๋ฅผ ์ƒ์„ฑํ•˜๋“  ๊ด€๊ณ„์—†์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

      CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
        RETURNS TABLE(g GEOGRAPHY)
        ...
      
      Copy
      WITH test_return_geography_table_1() AS PROCEDURE
        RETURNS TABLE(g GEOGRAPHY)
        ...
      CALL test_return_geography_table_1();
      
      Copy

      GEOGRAPHY๋ฅผ ์—ด ์œ ํ˜•์œผ๋กœ ์ง€์ •ํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

      Stored procedure execution error: data type of returned table does not match expected returned table type
      
      Copy

      ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด RETURNS TABLE() ์—์„œ ์—ด ์ธ์ž์™€ ์œ ํ˜•์„ ์ƒ๋žตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

      CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
        RETURNS TABLE()
        ...
      
      Copy
      WITH test_return_geography_table_1() AS PROCEDURE
        RETURNS TABLE()
        ...
      CALL test_return_geography_table_1();
      
      Copy

      RESULTSET ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์˜ˆ์™€ ๊ฐ™์ด RESULTSET๋ฅผ TABLE(โ€ฆ)๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

      CREATE PROCEDURE ...
      RETURNS TABLE(...)
      ...
          RETURN TABLE(my_result_set);
      ...
      
      Copy

      RESULTSET๋ฅผ ํ…Œ์ด๋ธ”๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ์ €์žฅ ํ”„๋กœ์‹œ์ €์˜ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ €์žฅ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ’ ์‚ฌ์šฉํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์˜ˆยถ

์ด ์˜ˆ์—์„œ๋Š” Snowflake Scripting ์ต๋ช… ๋ธ”๋ก์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด my_var ์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๋‹ค์Œ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
Copy

์ฐธ๊ณ : Python Connector ์ฝ”๋“œ์—์„œ Snowflake CLI, SnowSQL, Classic Console, ๋˜๋Š” execute_stream ๋˜๋Š” execute_string ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์˜ˆ์ œ๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(Snowflake CLI, SnowSQL, Classic Console ๋ฐ Python Connector์—์„œ Snowflake Scripting ์‚ฌ์šฉํ•˜๊ธฐ ์ฐธ์กฐ).

EXECUTE IMMEDIATE
$$
DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
$$;
Copy