【发布时间】:2012-01-04 19:52:49
【问题描述】:
我是 SQL Server 的新手。我通过 SQL Server Management Studio 登录到我的数据库。
我有一个存储过程列表。如何查看存储过程代码?
右击存储过程没有view contents of stored procedure之类的选项。
谢谢。
【问题讨论】:
-
你必须“修改”它。
标签: sql-server tsql ssms
我是 SQL Server 的新手。我通过 SQL Server Management Studio 登录到我的数据库。
我有一个存储过程列表。如何查看存储过程代码?
右击存储过程没有view contents of stored procedure之类的选项。
谢谢。
【问题讨论】:
标签: sql-server tsql ssms
我想这是查看存储过程代码的更好方法:
sp_helptext <name of your sp>
【讨论】:
右击存储过程并选择Script Stored Procedure as |创建到 |新的查询编辑器窗口/剪贴板/文件。
你也可以在存储过程上右击修改。
对于多个过程,单击 Stored Procedures 文件夹,按 F7 打开“对象资源管理器详细信息”窗格,按住 Ctrl 并单击以选择所有您想要的,然后右键单击并选择 Script Stored Procedure as |创建到。
【讨论】:
这个选项叫做Modify:
这将在一个新的查询窗口中向您显示存储过程的 T-SQL 代码,并带有 ALTER PROCEDURE ... 前导,因此您可以轻松更改或修改您的过程并更新它
【讨论】:
这是查看存储过程定义的另一种方式
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Your_SP'))
【讨论】:
使用这个查询:
SELECT object_definition(object_id) AS [Proc Definition]
FROM sys.objects
WHERE type='P'
【讨论】:
建议使用对象资源管理器并将存储过程编写到新的查询编辑器窗口的其他答案以及其他查询都是可靠的选择。
我个人喜欢使用下面的查询来检索单行中的存储过程定义/代码(我使用的是 Microsoft SQL Server 2014,但看起来这应该适用于 SQL Server 2008 及更高版本)
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('yourSchemaName.yourStoredProcedureName')
有关 sys.sql_modules 的更多信息:
【讨论】:
exec sp_helptext 'your_sp_name' -- 不要忘记引号
默认情况下,在管理工作室中,结果以网格视图显示。如果您想在文本视图中查看它,请转到:
查询 --> 结果到 --> 结果到文本
或 CTRL + T 然后执行。
【讨论】:
您可以使用此查询查看存储在数据库中的所有对象代码:
USE [test] --Database Name
SELECT
sch.name+'.'+ob.name AS [Object],
ob.create_date,
ob.modify_date,
ob.type_desc,
mod.definition
FROM
sys.objects AS ob
LEFT JOIN sys.schemas AS sch ON
sch.schema_id = ob.schema_id
LEFT JOIN sys.sql_modules AS mod ON
mod.object_id = ob.object_id
WHERE mod.definition IS NOT NULL --Selects only objects with the definition (code)
【讨论】:
如果您没有“修改”权限,您可以安装一个名为“SQL Search”的免费工具(由 Redgate 提供)。我用它来搜索我知道将在 SP 中出现的关键字,它会返回 SP 代码的预览,其中突出显示了关键字。
巧妙!然后我将此代码复制到我自己的 SP 中。
【讨论】:
这是更好的方法:
SELECT object_definition(object_id)
FROM sys.objects
WHERE type='p' and name='SP_Name'
【讨论】:
SELECT name,object_definition(object_id) FROM sys.objects WHERE type='p' and name LIKE'sp_%'