如何在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
相关产品推荐
相关产品推荐

