求Redshift中依赖指定表的存储过程列表查询语句
查找Redshift中引用指定表的存储过程
以下是直接可用的查询语句,替换其中的your_schema.your_table为你要查找的目标表(包含schema可避免同名表混淆):
SELECT n.nspname AS procedure_schema, p.proname AS procedure_name, pg_get_functiondef(p.oid) AS procedure_definition FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE pg_get_functiondef(p.oid) LIKE '%your_schema.your_table%' -- 若表名可能不带schema被引用,可追加以下条件 OR pg_get_functiondef(p.oid) LIKE '%your_table%' ORDER BY procedure_schema, procedure_name;
注意事项
- 如果表名或schema包含特殊字符,需要调整
LIKE语句的匹配规则,比如添加转义符处理。 - 该查询基于存储过程的静态定义,若存储过程中使用动态SQL拼接表名(比如
EXECUTE语句),这类情况无法通过此查询检测到,需要额外排查动态逻辑。 - Redshift的
pg_proc视图包含所有存储过程/函数,pg_get_functiondef会返回完整的创建语句,通过匹配表名字符串来定位引用。
内容的提问来源于stack exchange,提问作者nodev_101
相关产品推荐
相关产品推荐

