--取存储过程的参数列表
--1.方法一
ALTER PROCEDURE [dbo].[Proc_GetProcedureParams]
@ProcName as varchar(255)--存储过程名称或函数名称
AS
/*
用途:取存储过程或函数的参数列表,如果是函数且返回表,则返回表的栏位信息
*/
--DECLARE @ProcName as varchar(255)
--SET @ProcName='Pro_New_A_NBO_Order'
select 'Parameter_name'= name,
'Type'= type_name(xusertype),
'Length' = length,
'Prec'= case when type_name(xtype) = 'uniqueidentifier' then xprec
else OdbcPrec(xtype,length,xprec) end,
'Scale' = OdbcScale(xtype,xscale),
'Param_order'= colid,
'IsOutput'=(case when colstat=4 then 1 else 0 end)
from syscolumns
where id = object_id(@ProcName)
--2.方法二
exec sp_procedure_params_rowset @procedure_name = 'Pro_New_A_NBO_Order'
其他的一些想法:
1.这里的实现是使用syscolumns,是sql2000中的,sql2005中也有,但sys.columns表中并不存储参数信息。所以如果以后的版本不支持sql2000了,那么这种实现方式就不能用了。
2.是否可以使用XPath通过分析XML来取存储过程的参数?