21

版本:SQLServer 8

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

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

DBName.dbo.functionName

如何查看此功能的内容?

4

7 回答 7

31

您可以使用sp_helptext命令查看定义。它只是做

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

例如;

EXEC sp_helptext 'StoredProcedureName'

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

EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
于 2013-03-20T11:15:06.940 回答
7
select definition 
from sys.sql_modules 
where object_name(object_id) like 'functionName'
于 2013-03-20T11:36:44.873 回答
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)
于 2014-02-21T22:23:59.853 回答
1

是的,它工作正常。

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

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

EXEC sp_helptext 'StoredProcedureName'。

于 2014-08-13T11:43:09.140 回答
1

我宁愿使用 INFORMATION_SCHEMA.ROUTINES:

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

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

于 2015-02-13T22:53:12.097 回答
1

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

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

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

于 2018-09-21T07:19:28.737 回答
1

您可以转到对象资源管理器,选择包含存储过程的数据库,然后选择“将存储过程编写为脚本”:

在此处输入图像描述

然后签入您选择的目标文件夹。

于 2020-12-24T06:32:42.537 回答