取儲存過程的引數列表

2021-05-08 06:46:02 字數 1018 閱讀 8445

--取儲存過程的引數列表

--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...