Sql 在db2中,如何查找包含给定文本的所有存储过程

Sql 在db2中,如何查找包含给定文本的所有存储过程,sql,stored-procedures,db2,Sql,Stored Procedures,Db2,我想知道系统中所有存储过程中是否都在使用表。 是否有获取SP所有详细信息的查询。您可以使用SYSCAT.TABDEP和SYSCAT.ROUTINEDEP系统目录视图 对于动态SQL语句中动态构建和执行的表,可以使用 select routinename,text from syscat.routines where language='SQL' and locate('<table-name>',text)>0 从syscat.routines中选择routinename,t

我想知道系统中所有存储过程中是否都在使用表。
是否有获取SP所有详细信息的查询。

您可以使用SYSCAT.TABDEP和SYSCAT.ROUTINEDEP系统目录视图

对于动态SQL语句中动态构建和执行的表,可以使用

select routinename,text from syscat.routines where language='SQL' and locate('<table-name>',text)>0
从syscat.routines中选择routinename,text,其中language='SQL'和locate('',text)>0


Sathyaram

您可以使用SYSCAT.TABDEP和SYSCAT.ROUTINEDEP系统目录视图

对于动态SQL语句中动态构建和执行的表,可以使用

select routinename,text from syscat.routines where language='SQL' and locate('<table-name>',text)>0
从syscat.routines中选择routinename,text,其中language='SQL'和locate('',text)>0


Sathyaram

对于我们特殊风格的DB2,公认的答案并不适用于我,但它为我指明了正确的方向。下面是我编写的查询,它允许我在给定模式中搜索存储过程:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM sysibm.routines 
WHERE SPECIFIC_SCHEMA='<YourSchemaName>' 
    AND ROUTINE_DEFINITION LIKE '<YourSearchText>%'
从sysibm.routines中选择例程名称、例程定义
其中,特定的_模式=“”
以及类似“%”的常规定义

用适当的值替换YourSchemaName和YourSearchText。

对于我们特定风格的DB2,接受的答案并不适用,但它为我指明了正确的方向。下面是我编写的查询,它允许我在给定模式中搜索存储过程:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM sysibm.routines 
WHERE SPECIFIC_SCHEMA='<YourSchemaName>' 
    AND ROUTINE_DEFINITION LIKE '<YourSearchText>%'
从sysibm.routines中选择例程名称、例程定义
其中,特定的_模式=“”
以及类似“%”的常规定义

用适当的值替换您的Schemaname和SearchText。

谢谢,它成功了。与例程视图类似,我还找到了过程视图。DB27中提供的这两个.SYSCAT.FUNCTIONS和SYSCAT.PROCEDURES之间的区别是什么。从8开始,这些视图被合并到SYSCAT.ROUTINES中(当然,对ROUTINES视图进行了更多的添加)。SYSCAT.PROCEDURES仅用于向后兼容的原因。所以,我建议使用常规。谢谢你,它奏效了。与例程视图类似,我还找到了过程视图。DB27中提供的这两个.SYSCAT.FUNCTIONS和SYSCAT.PROCEDURES之间的区别是什么。从8开始,这些视图被合并到SYSCAT.ROUTINES中(当然,对ROUTINES视图进行了更多的添加)。SYSCAT.PROCEDURES仅用于向后兼容的原因。因此,我建议使用例程。