--取儲存過程的引數列表
--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來取儲存過程的引數?
delphp自動建立儲存過程引數列表
通過adostoredproc執行儲存過程必須先手動建立引數列表,這個建立有點麻煩,所以自已寫了個自動建立引數列表的函式,供自已使用,哪位有需要的話也可以直接使用。自動建立儲存過程列表 function tform1.createprocparalist adostore tadostoredpro...
取儲存過程的資訊
select case when a.colorder 1 then d.name else end n tabname case when a.colorder 1 then d.id else end n tabid a.colorder n keyno a.name n colname b.n...
得到所有使用者儲存過程及引數列表
alterproceduregetdatabaseinfo9 asselect casewhenb.colorder 1orb.colorderisnullthena.nameelse end asn 表名 b.nameasn 欄位名 c.nameasn 資料型別 b.precasn 長度 case...