这将为您提供所有过程、它们的参数和它们的参数类型。如果你想把它变成临时文件,你可以删除注释掉的部分。此外,如果您只想要一个程序,那么您可以set @ProcName 为该程序的名称。
declare @ProcName varchar(4000) = null
select
o.name as ProcName,
p.name as ParamName,
t.name as ParamType
--into #someTemp
from
sys.objects o
inner join
sys.parameters p on p.object_id = o.object_id
inner join
sys.types t on t.system_type_id = p.system_type_id
where
o.type = 'P'
and @ProcName is null or o.name = @ProcName
根据您的评论进行更新
---------------------------------------------------------
--create a global temp
--Remember SQL will clean up (remove) your temp when it wants
---------------------------------------------------------
create table ##someTemp(
DT datetime,
ProcName varchar(256),
ParamName varchar(128),
ParamType varchar(128),
Val varchar(256))
go
---------------------------------------------------------
--create the procedure
---------------------------------------------------------
create procedure [dbo].[usp_test_param_insert] (@int char(1), @someString varchar(256))
as
insert into ##someTemp (DT,ProcName,ParamName, ParamType, val) values
(getdate(),'usp_test','@int','int',@int),
(getdate(),'usp_test','@someString','varchar(256)',@someString)
select @int, @someString
GO
---------------------------------------------------------
--call the proc a few times... i put the delay so you
--can see the time stamp changing
---------------------------------------------------------
exec usp_test_param_insert 1,'first string'
WAITFOR DELAY '00:00:05'
exec usp_test_param_insert 2,'second string'
WAITFOR DELAY '00:00:05'
exec usp_test_param_insert 3,'third string'
---------------------------------------------------------
--See your results
---------------------------------------------------------
select * from ##someTemp