使用Snowflake Scripting执行INSERT语句失败问题求助
问题原因
Snowflake Scripting 的 RETURN 语句仅支持返回查询结果集,无法直接返回 INSERT/UPDATE/CREATE 这类DML/DDL语句的执行结果——因为这类语句本身不产生可返回的结果集,仅执行数据操作或对象创建动作。
解决方案
先单独执行DML/DDL语句,再返回自定义的状态提示或操作统计信息(比如影响行数)。
修改后的可用脚本
create or replace table ccb_test as select 1 as value, sysdate() as ETL_TS; SET reload_type = 'PARTIAL' BEGIN LET reload := $reload_type; IF (reload = 'PARTIAL') THEN -- 单独执行INSERT操作,不嵌套在RETURN中 INSERT into ccb_test select 2 as value, sysdate() as ETL_DATE; -- 返回操作状态+影响行数 RETURN (SELECT 'PARTIAL reload completed. Rows inserted: ' || @@ROWCOUNT AS message); ELSE RETURN (SELECT 'Reload is set to FULL, no merge action needed.' AS message); END IF; END;
关键说明
- DML/DDL语句必须独立执行,不能作为
RETURN()的参数 - 使用
@@ROWCOUNT可以获取上一条DML语句影响的行数,用于返回操作结果 - 若执行DDL语句,可返回自定义确认消息,或用
GET_DDL('TABLE', 'CCB_TEST')返回对象的DDL定义作为结果
内容的提问来源于stack exchange,提问作者user24904733
相关产品推荐
相关产品推荐

