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

Snowflake使用GET_DDL命令获取存储过程DDL时缺失定义问题求助

问题原因

GET_DDL返回存储过程AS后内容为空的核心原因是当前使用的角色缺少存储过程的READ DEFINITION权限,即使已配置Schema级别的基础权限,该权限也需要单独配置。


解决方案

  • 首先确认当前会话使用的角色是否为预期的已授权角色,执行命令校验:
SELECT CURRENT_ROLE();
  • 给对应角色授予指定存储过程的READ DEFINITION权限,替换尖括号内的自定义参数后执行:
GRANT READ DEFINITION ON PROCEDURE EMPLOYEE_INSERT() TO ROLE <你的目标角色名>;
  • 如果你需要批量获取该Schema下所有存储过程的DDL,可以执行批量授权命令:
GRANT READ DEFINITION ON ALL PROCEDURES IN SCHEMA <你的数据库名>.<你的Schema名> TO ROLE <你的目标角色名>;
  • 如需后续该Schema下新建的存储过程自动授予该权限,执行未来对象授权命令:
GRANT READ DEFINITION ON FUTURE PROCEDURES IN SCHEMA <你的数据库名>.<你的Schema名> TO ROLE <你的目标角色名>;
  • 若仍无法获取,补充授予存储过程的USAGE权限:
GRANT USAGE ON PROCEDURE EMPLOYEE_INSERT() TO ROLE <你的目标角色名>;
  • 授权完成后重新执行GET_DDL查询即可获取完整定义,注意存储过程名称后需要带上完整的参数签名(无参数也要带空括号):
SELECT GET_DDL('PROCEDURE', 'EMPLOYEE_INSERT()');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:09:04