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

如何在Snowflake的Python存储过程中调用SQL存储过程?

在Snowflake Python存储过程中调用SQL存储过程的正确方法

你遇到的ModuleNotFoundError: No module named 'snowflake'错误,是因为Snowflake的Python存储过程运行环境中并没有snowflake这个模块,正确的做法是使用存储过程handler函数传入的session对象来执行SQL语句。

修正后的完整代码

-- 保留原有的SQL存储过程
CREATE OR REPLACE PROCEDURE output_message(message VARCHAR)
RETURNS VARCHAR NOT NULL
LANGUAGE SQL
AS
$$
BEGIN
  RETURN message;
END;
$$
;

-- 修正后的Python存储过程
CREATE OR REPLACE procedure SECOND_PROC()
RETURNS VARCHAR
LANGUAGE PYTHON
RUNTIME_VERSION = '3.8'
HANDLER = 'main'
EXECUTE AS CALLER
AS
$$
def main(session):
    -- 使用session对象执行CALL语句
    result = session.sql("CALL output_message('hello there')").collect()
    -- 提取返回结果并返回
    return result[0][0]
$$;

-- 调用Python存储过程
CALL SECOND_PROC();

关键说明

  • Snowflake Python存储过程的handler函数会自动传入session参数,这个对象是Snowflake提供的核心接口,用于执行SQL、处理数据等操作。
  • session.sql()方法用于执行SQL语句,collect()方法会将查询结果转换为列表形式,方便提取返回值。
  • 如果不需要返回结果,仅执行调用操作,可以简化为session.sql("CALL output_message('hello there')").execute()。

内容的提问来源于stack exchange,提问作者JAGADEESHA R G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:12:24