版本:SQLServer 8
我想在sqlserver中查看存储函数的内容,即函数究竟在做什么。
列出的所有选项here都不适合我。似乎没有任何名为sys.objects的数据库/表。我能够查询information_table.routines表,但不包含我正在寻找的功能。我的功能位于:
DBName.dbo.functionName
如何查看此功能的内容?
您可以使用sp_helptext命令查看定义。它就是这么做的
显示用户定义规则的定义,默认,未加密的Transact-SQL存储过程,用户定义的Transact-SQL函数,触发器,计算列,CHECK约束,视图或系统对象(如系统存储过程)。
E.g;
EXEC sp_helptext 'StoredProcedureName'
编辑:如果您的databases
或server
不同,那么你可以通过指定它们来做到这一点
EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
select definition
from sys.sql_modules
where object_name(object_id) like 'functionName'
--ShowStoredProcedures
select p.[type]
,p.[name]
,c.[definition]
from sys.objects p
join sys.sql_modules c
on p.object_id = c.object_id
where p.[type] = 'P'
--and c.[definition] like '%foo%'
ORDER BY p.[name]
___________
SELECT OBJECT_NAME(object_id) ProcedureName,
definition
FROM sys.sql_modules
WHERE objectproperty(object_id,'IsProcedure') = 1
ORDER BY OBJECT_NAME(object_id)
我更喜欢使用INFORMATION_SCHEMA.ROUTINES:
select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'
只需将ROUTINE_DEFINITION列复制到新窗口即可查看完整内容。
是的它工作正常。
查看存储过程... SELECT * FROM sys.procedures;
获取procduere名称并使用以下查询(我使用的是SQuirreL SQL客户端版本3.2.0-RC1)。
EXEC sp_helptext'StoredProcedureName'。
无论是存储过程还是函数,脚本下面的任何SQL对象都将给出完整的定义
USE<Your Data base>
SELECT OBJECT_DEFINITION (OBJECT_ID('<YOUR OBJECT NAME>')) AS ObjectDefinition
其中OBJECT NAME可以是您的对象名称,例如存储过程/函数/触发器...等名称