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

Snowpark执行ALTER SESSION语句报错,如何无错误执行该语句?

解决Snowpark执行ALTER SESSION语句报错的问题

问题分析

报错信息:

SnowparkSQLException: (1304): 01b90062-0205-27a9-0000-01915ca148da: 090236 (42601): Stored procedure execution error: Unsupported statement type 'ALTER_SESSION'.

核心原因分两种场景:

  • 直接调用collect()方法:collect()用于提取查询结果集,但ALTER SESSION属于无返回结果的DDL语句,调用该方法会触发异常。
  • 在存储过程内执行:Snowpark存储过程默认不支持直接执行ALTER SESSION这类会话级修改语句,需要特殊处理。

解决方案

场景1:非存储过程的Snowpark脚本中执行

移除collect(),改用execute()方法执行语句:

session.sql("ALTER SESSION SET query_tag = 'test';").execute()

execute()专门用于执行无返回结果的DDL/DML操作,适配ALTER SESSION的特性。

场景2:Snowpark存储过程中执行

需用EXECUTE IMMEDIATE包裹语句,同时转义内部单引号:

from snowflake.snowpark import Session
from snowflake.snowpark.types import StringType

def set_session_query_tag(session: Session):
    # 用两个单引号转义字符串内部的单引号
    session.sql("EXECUTE IMMEDIATE 'ALTER SESSION SET query_tag = ''test''';").execute()
    return "Query tag set successfully"

# 注册存储过程
session.sproc.register(
    func=set_session_query_tag,
    return_type=StringType(),
    input_types=[],
    is_permanent=False,
    name="SET_SESSION_QUERY_TAG"
)

通过EXECUTE IMMEDIATE可以在存储过程上下文中间接执行ALTER SESSION语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:52:34