sql—我可以在db2中找到所有包含特定列的存储过程吗?

tcbh2hod  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(306)

我试图找出db2中包含特定列的所有存储过程。我一直想做这样的事,但是没有 syscat.colnamesyscat.procedures .

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

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

5t7ly7z5

5t7ly7z51#

您只需要检查过程文本是否提到列名。
对于最新版本的db2forlinux/unix/windows(db2luw),可以尝试以下操作:(将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—例如,列名可能在备注中引用或是变量名的一部分。其他目录表包含静态sql包的依赖对象信息。

相关问题