如何在Snowflake中创建支持数组push输出的虚拟存储过程
Snowflake 测试用支持数组push操作的虚拟存储过程实现
以下是可直接运行的实现方案,覆盖两种常用实现方式,均满足数组追加(push)元素、最终返回数组类型结果的测试需求。
JavaScript 语言实现(适配复杂测试场景)
该版本直接使用JavaScript原生数组的push方法,支持插入字符串、数字、对象等任意类型的测试值,创建语句如下:
CREATE OR REPLACE PROCEDURE dummy_array_push_proc() RETURNS ARRAY LANGUAGE JAVASCRIPT EXECUTE AS CALLER AS $$ // 初始化输出数组 let outputArr = []; // 执行push操作追加测试元素,可按需修改、增删插入内容 outputArr.push("first_dummy_value"); outputArr.push("second_dummy_value"); outputArr.push(9527); outputArr.push({"test_key": "test_content", "is_dummy": true}); // 返回处理完成的数组 return outputArr; $$;
执行调用语句即可拿到push后的数组结果:
CALL dummy_array_push_proc();
如果需要支持动态传入元素做push测试,可以使用入参版本:
CREATE OR REPLACE PROCEDURE dummy_array_push_proc(input_vals ARRAY) RETURNS ARRAY LANGUAGE JAVASCRIPT EXECUTE AS CALLER AS $$ let outputArr = []; // 将传入的所有元素逐个push到输出数组 for (const val of INPUT_VALS) { outputArr.push(val); } // 追加固定测试值 outputArr.push("fixed_dummy_tail_element"); return outputArr; $$;
原生SQL语言实现(无额外语言依赖)
如果测试场景要求使用纯SQL实现,可以用Snowflake内置的ARRAY_APPEND函数实现和push完全等价的数组追加效果,创建语句如下:
CREATE OR REPLACE PROCEDURE dummy_array_push_proc_sql() RETURNS ARRAY LANGUAGE SQL EXECUTE AS CALLER AS BEGIN LET output_arr ARRAY := []; -- 逐次追加元素,等价数组push操作 output_arr := ARRAY_APPEND(output_arr, 'sql_dummy_val_1'); output_arr := ARRAY_APPEND(output_arr, 'sql_dummy_val_2'); output_arr := ARRAY_APPEND(output_arr, 45678); RETURN output_arr; END; $$;
注意:两个版本的存储过程返回值均为Snowflake原生ARRAY类型,可直接用于后续数组相关功能的测试验证。
内容的提问来源于stack exchange,提问作者srujk
相关产品推荐
相关产品推荐

