You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake SQL存储过程删除表报错:SQL查询无SELECT语句

问题解决:Snowflake存储过程执行删除表时报错“The SQL query doesn't contain any SELECT statement”

错误原因

当WAREHOUSE.PUBLIC.DATASETS表中无数据时,SELECT LISTAGG(...) INTO exec_sql不会给变量exec_sql赋值,此时exec_sql为NULL。执行EXECUTE IMMEDIATE exec_sql相当于执行空SQL语句,从而触发该错误。

修复后的代码

USE SCHEMA "PUBLIC";

CREATE OR REPLACE PROCEDURE DROP_TABLE()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
DECLARE
exec_sql VARCHAR;
BEGIN
    SELECT LISTAGG('DROP TABLE IF EXISTS "' || SF_DATABASE || '"."' || SF_SCHEMA || '"."' || SF_TABLE || '";') 
           WITHIN GROUP (ORDER BY SF_DATABASE, SF_SCHEMA, SF_TABLE) 
    INTO exec_sql
    FROM WAREHOUSE.PUBLIC.DATASETS;
    
    -- 仅当存在要执行的SQL时才执行删除操作
    IF (exec_sql IS NOT NULL) THEN
        EXECUTE IMMEDIATE exec_sql;
    ELSE
        RETURN '没有需要删除的表。';
    END IF;
    
    RETURN exec_sql;
END;
$$;

CALL DROP_TABLE();

关键修改说明

  • 新增exec_sql IS NOT NULL的判断逻辑,避免执行空SQL语句
  • 无表可删时返回明确提示,让执行结果更直观

内容的提问来源于stack exchange,提问作者Pedro Caldeira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:42:03