如何用sql语句查询出存储过程参数的默认值
如存储过程为
create procedure ptest
@a char(6),
@b int = 33
as
begin
... ...
end
怎样能能够用sql语句查询到@b的默认值是33
create procedure ptest
@a char(6),
@b int = 33
as
begin
... ...
end
怎样能能够用sql语句查询到@b的默认值是33
作者: ggw128 发布时间: 2011-06-16
sys.parameters
作者: liangCK 发布时间: 2011-06-16
select name,default_value from sys.parameters where object_id = object_id('procname')
作者: aspwebchh 发布时间: 2011-06-16
引用 1 楼 liangck 的回复:
sys.parameters
sys.parameters
可是..........
create procedure ptest
@a char(6),
@b int = 33
as
begin
select ''
end
select default_value,* from sys.parameters where object_id=object_id('ptest')
default_value 查出为null,不知何故?
作者: ggw128 发布时间: 2011-06-16
引用 1 楼 liangck 的回复:
sys.parameters
sys.parameters
SQL code
select name,parameter_id,max_length,default_value from sys.parameters where object_id=(select id from sysobjects where name='ptest') /* name parameter_id max_length default_value -------------------- ------------ ---------- --------------- @a 1 6 NULL @b 2 4 NULL */
这里显示的默认值是null
作者: maco_wang 发布时间: 2011-06-16
http://msdn.microsoft.com/zh-cn/library/ms176074%28v=SQL.100%29.aspx
官方说明:
has_default_value
SQL Server 只维护该目录视图中的 CLR 对象的默认值;因此,对于 Transact-SQL 对象,此列包含值 0。若要查看 Transact-SQL 对象中的参数的默认值,请查询 sys.sql_modules 目录视图的 definition 列,或使用 OBJECT_DEFINITION 系统函数。
default_value
sql_variant 如果 has_default_value 为 1,则此列的值为该参数的默认值;否则为 NULL。
具体使用:
SQL code
官方说明:
has_default_value
SQL Server 只维护该目录视图中的 CLR 对象的默认值;因此,对于 Transact-SQL 对象,此列包含值 0。若要查看 Transact-SQL 对象中的参数的默认值,请查询 sys.sql_modules 目录视图的 definition 列,或使用 OBJECT_DEFINITION 系统函数。
default_value
sql_variant 如果 has_default_value 为 1,则此列的值为该参数的默认值;否则为 NULL。
具体使用:
SQL code
--第一种查看方式 select object_definition((select id from sysobjects where name='ptest')) --第二种查看方式 select definition from sys.sql_modules where object_id=(select id from sysobjects where name='ptest') --第三种查看方式 select [text] from syscomments where id= (select id from sysobjects where name='ptest')
作者: maco_wang 发布时间: 2011-06-16
楼上也没有根本上解决问题啊。
作者: ggw128 发布时间: 2011-06-16