我能否在 DB2 中找到包含特定列的所有存储过程?

Can I find all stored procedures that contain a certain column in DB2?

我试图找出包含 DB2 中特定列的所有存储过程。我一直在尝试做这样的事情,但是 syscat.procedures.

中没有 syscat.colname
select *
from syscat.procedures
where syscat.colname like '%FLAG%'

你们有什么想法吗?谢谢。

您只想检查过程文本是否提到了列名。

对于 linux/unix/windows (Db2-LUW) 的最新版本的 Db2,您可以尝试这样的操作:(用您查找的名称替换 COLNAME):

select cast(rtrim(procschema)|'.'||rtrim(procname) as varchar(128) ) as procname
from syscat.procedures
where dbms_lob.instr(text , varchar('COLNAME'), 1) > 0
order by 1
with ur;

请注意,搜索区分大小写,因此如果您需要不区分大小写,则需要进行调整。

此查询不保证该列在 SQL 中用于 insert/update/delete/select - 例如,列名可能在备注中引用或作为变量名的一部分。其他目录表包含 static-SQL 包的依赖对象信息。