我能否在 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 包的依赖对象信息。
我试图找出包含 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 包的依赖对象信息。