如何在Databricks中调用Snowflake存储过程?
Databricks调用Snowflake存储过程报错"unknown function"的解决办法
以下是针对问题的排查和解决步骤:
确认存储过程存在且有权限
- 登录Snowflake控制台,检查
yourdbname.schemaname.test_proc是否确实存在于指定的数据库和schema下。 - 确保Databricks连接Snowflake使用的账号拥有该存储过程的
EXECUTE权限,可在Snowflake中执行授权命令:
注意:命令中的参数类型必须与存储过程定义的参数类型完全匹配。GRANT EXECUTE ON PROCEDURE yourdbname.schemaname.test_proc(VARCHAR, VARCHAR) TO ROLE your_connection_role;
- 登录Snowflake控制台,检查
修正调用语法
- 检查库、schema、存储过程名称的拼写,若对象名包含特殊字符或大小写敏感,需用双引号包裹:
cs.execute('call "yourdbname"."schemaname"."test_proc"(\'value1\', \'value2\')') - 确认参数类型与存储过程定义一致,比如存储过程接受整数参数时,不能传递字符串值。
- 检查库、schema、存储过程名称的拼写,若对象名包含特殊字符或大小写敏感,需用双引号包裹:
配置连接的默认上下文
若Databricks的Snowflake连接未指定默认数据库和schema,可先切换上下文再调用:cs.execute("USE DATABASE yourdbname") cs.execute("USE SCHEMA schemaname") cs.execute("call test_proc('value1', 'value2')")区分存储过程与函数
确保你调用的是存储过程而非函数:Snowflake存储过程用CALL语句,函数用SELECT语句,不要混淆两者的调用方式。
内容的提问来源于stack exchange,提问作者Guna P
相关产品推荐
相关产品推荐

