Snowflake Scripting: グローバル変数の変更(保留中)¶
この動作変更バンドルが有効な場合、 DML コマンド用のSnowflake Scriptingグローバル変数の動作が異なります。これらの変数については、 DML コマンドの影響を受ける行数の決定 で説明しています。
Snowflake Scriptingブロックまたはストアドプロシージャの最後の DML ステートメントの後に DML 以外のステートメントが実行されると、これらの変数は次のように動作します。
- 変更前:
変数は、最後の DML ステートメントで設定された値を返します。
SQLROWCOUNT
- 最後の DML ステートメントの影響を受けた行の数。最後の DML ステートメントに基づく
SQLFOUND
-TRUE
または、FALSE
。最後の DML ステートメントに基づく
SQLNOTFOUND
-TRUE
または、FALSE
。
- 変更後:
変数は NULL を返します。
例えば、次のSnowflake Scripting匿名ブロックは、変更前と変更後で異なる値を返します。
EXECUTE IMMEDIATE
$$
BEGIN
CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
INSERT INTO test_snowflake_scripting_gv VALUES (1);
SELECT 1;
RETURN SQLROWCOUNT;
END;
$$;
- 変更前の戻り値::
+-----------------+ | anonymous block | |-----------------| | 1 | +-----------------+
- 変更後の戻り値::
+-----------------+ | anonymous block | |-----------------| | NULL | +-----------------+
変更後に以前の動作を実現するには、以降の DML 以外のステートメントの前に、Snowflake Scriptingグローバル変数の値を新しい変数に保存し、新しい変数の値を返します。例:
EXECUTE IMMEDIATE
$$
BEGIN
LET sql_row_count_var := 0;
CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
INSERT INTO test_snowflake_scripting_gv VALUES (1);
sql_row_count_var := SQLROWCOUNT;
SELECT 1;
RETURN sql_row_count_var;
END;
$$;
参照: 1850