版本:SQLServer 8
我想查看sqlserver中存储函数的内容,即该函数到底在做什么。
此处列出的所有选项都不适合我。似乎没有任何名为 sys.objects 的数据库/表。我能够查询 information_table.routines 表,但它不包含我正在寻找的函数。我的功能位于:
DBName.dbo.functionName
如何查看此功能的内容?
版本:SQLServer 8
我想查看sqlserver中存储函数的内容,即该函数到底在做什么。
此处列出的所有选项都不适合我。似乎没有任何名为 sys.objects 的数据库/表。我能够查询 information_table.routines 表,但它不包含我正在寻找的函数。我的功能位于:
DBName.dbo.functionName
如何查看此功能的内容?
您可以使用sp_helptext命令查看定义。它只是做
显示用户定义的规则、默认、未加密的 Transact-SQL 存储过程、用户定义的 Transact-SQL 函数、触发器、计算列、CHECK 约束、视图或系统对象(例如系统存储过程)的定义。
例如;
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)
是的,它工作正常。
查看存储过程... SELECT * FROM sys.procedures;
并获取 procduere 名称并使用以下查询(我使用的是 SQuirreL SQL 客户端版本 3.2.0-RC1)。
EXEC sp_helptext 'StoredProcedureName'。
我宁愿使用 INFORMATION_SCHEMA.ROUTINES:
select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'
只需将 ROUTINE_DEFINITION 列复制到新窗口即可查看完整内容。
无论是存储过程还是函数还是脚本下面的任何 SQL 对象都将给出完整的定义
USE<Your Data base>
SELECT OBJECT_DEFINITION (OBJECT_ID('<YOUR OBJECT NAME>')) AS ObjectDefinition
其中OBJECT NAME可以是您的对象名称,例如存储过程/函数/触发器 ...等名称