我们想在SQL server里面查询一个对象的存储过程可以在sysobjects表里面查询。SQL Server中的表、视图、存储过程等数据库对象信息都记录在系统表“sysobjects”中。因此,可以通过查询“sysobjects”表,显示当前数据库中的视图,系统表,用户表以及存储过程。



select * from sysobject where type='V' and type ='S' and type ='U' and type ='P'



这里V,S,U,P代表什么可以拉到最下面看表结构里面的内容。

根据存储过程名字获取对应的存储过程内容:



SELECT distinct b.name
from sysobjects a, syscomments b
where a.id = b.id and
b.xtype = 'p'
and a.text like '%xxx%' --xxx为需要查询得内容
order by name;



或者用下面的系统视图查询:



SELECT TOP 10 ir.SPECIFIC_NAME, ir.CREATED, ir.LAST_ALTERED
FROM INFORMATION_SCHEMA.ROUTINES ir
ORDER BY ir.LAST_ALTERED DESC



【栗子】:

按这个查询查询出%BOTO%的结果是在OBJECT里面:




sql server 查询 存储过程内容 sql server怎么查看存储过程_SQL


然后查询某一条存储过程具体内容:


sp_helptext [ @objname = ] 'name'


sql server 查询 存储过程内容 sql server怎么查看存储过程_数据库_02


到这步我通常就会把这些东西都复制下来,放到notepad++里面,然后搜对应BOTO字段的具体过程。

下面是sysobjects,sys.syscomments两个表的结构:

sysobjects:

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。


sql server 查询 存储过程内容 sql server怎么查看存储过程_SQL_03


sys.syscomments:

包含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项。text 列包含原始的 SQL 定义语句。


sql server 查询 存储过程内容 sql server怎么查看存储过程_SQL_04