是否有sp_help的替代方法,其中包含参数的默认值?
答案 0 :(得分:1)
我确实希望默认设置在sys.all_parameters
中可用,实际上该视图有一个default_value
列。但不幸的是,它不用于T-SQL存储过程。 MSDN说:
SQL Server仅维护默认值 此目录中CLR对象的值 视图;因此,本专栏将 总是有一个0的值 Transact-SQL对象。要查看 a中参数的默认值 Transact-SQL对象,查询 定义列 sys.sql_modules目录视图,或使用 OBJECT_DEFINITION系统功能。
因此,检索存储过程参数的默认值的唯一方法是解析对象定义。
答案 1 :(得分:1)
This article可能很有用,它实际上提供了示例代码来解析例程定义以确定默认参数。
我希望在将来的版本中解决这个问题 - 这是元数据中的一个重要差距,并且没有真正的理由不应该提供它。
另一种可能性是定期解析proc并使用扩展属性自己标记参数 - 扩展属性更容易查询,您可以使用它们自我记录数据库:
USE [SandBox]
GO
/****** Object: StoredProcedure [dbo].[usp_Test] Script Date: 04/01/2010 20:23:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_Test]
@input INT = 0
AS BEGIN
SELECT @input AS [output]
END
GO
EXEC sys.sp_addextendedproperty @name=N'TestXP', @value=N'testing' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'PROCEDURE',@level1name=N'usp_Test', @level2type=N'PARAMETER',@level2name=N'@input'
GO
答案 2 :(得分:0)
我相信唯一的内置方法是使用sp_helptext来查看整个过程文本。