如何查看存储的函数 - SQL Server

问题描述 投票:15回答:6

版本:SQLServer 8

我想在sqlserver中查看存储函数的内容,即函数究竟在做什么。

列出的所有选项here都不适合我。似乎没有任何名为sys.objects的数据库/表。我能够查询information_table.routines表,但不包含我正在寻找的功能。我的功能位于:

DBName.dbo.functionName

如何查看此功能的内容?

sql-server stored-functions
6个回答
23
投票

您可以使用sp_helptext命令查看定义。它就是这么做的

显示用户定义规则的定义,默认,未加密的Transact-SQL存储过程,用户定义的Transact-SQL函数,触发器,计算列,CHECK约束,视图或系统对象(如系统存储过程)。

E.g;

EXEC sp_helptext 'StoredProcedureName'

编辑:如果您的databasesserver不同,那么你可以通过指定它们来做到这一点

EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'

5
投票
select definition 
from sys.sql_modules 
where object_name(object_id) like 'functionName'

2
投票
--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)

1
投票

我更喜欢使用INFORMATION_SCHEMA.ROUTINES:

select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED 
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'

只需将ROUTINE_DEFINITION列复制到新窗口即可查看完整内容。


0
投票

是的它工作正常。

查看存储过程... SELECT * FROM sys.procedures;

获取procduere名称并使用以下查询(我使用的是SQuirreL SQL客户端版本3.2.0-RC1)。

EXEC sp_helptext'StoredProcedureName'。


0
投票

无论是存储过程还是函数,脚本下面的任何SQL对象都将给出完整的定义

USE<Your Data base>
SELECT OBJECT_DEFINITION (OBJECT_ID('<YOUR OBJECT NAME>')) AS ObjectDefinition 

其中OBJECT NAME可以是您的对象名称,例如存储过程/函数/触发器...等名称

© www.soinside.com 2019 - 2024. All rights reserved.