ver stored salida procedimientos procedimiento parámetros parametros los fecha especifican entrada ejemplo ejecutar cómo crear con codigo almacenados almacenado sql sql-server tsql stored-procedures parameters

sql - stored - ¿Cómo obtener los detalles de los parámetros del procedimiento almacenados?



procedimiento almacenado sql server select (5)

¿Dónde puedo encontrar información sobre los parámetros del procedimiento almacenado? En mi situación, necesito saber solo los parámetros de entrada de un procedimiento de almacenamiento determinado.

En sys.objects solo hay detalles comunes sobre el procedimiento. En sys.sql_modules puedo extraer todo el texto SQL de un procedimiento.

Como (en el estudio de SQL Server Management) puedo extraer información sobre los parámetros en la vista tabular usando ALT+F1 al seleccionar el nombre del procedimiento, espero que haya algún lugar desde donde pueda extraerlos de esa manera.


Existen las tablas del sistema, como sys.objects o sys.sysobjects .

O también puede consultar INFORMATION_SCHEMA , específicamente INFORMATION_SCHEMA.ROUTINES e INFORMATION_SCHEMA.ROUTINE_COLUMNS .

Debido a que está en el ANSI-estándar INFORMATION_SCHEMA , hay menos peculiaridades específicas de SQL Server. En mi humilde opinión es más fácil de entender para la mayoría de las cosas.


Para un nombre de procedimiento proporcionado, la siguiente consulta enumera todos sus parámetros y su orden junto con su tipo, si el tipo es anulable y la longitud del tipo (para usar con VARCHAR, etc.)

Reemplace procedure_name con el nombre de su procedimiento.

DECLARE @ProcedureName VARCHAR(MAX) = ''procedure_name'' SELECT pa.parameter_id AS [order] , pa.name AS [name] , UPPER(t.name) AS [type] , t.is_nullable AS [nullable] , t.max_length AS [length] FROM sys.parameters AS pa INNER JOIN sys.procedures AS p on pa.object_id = p.object_id INNER JOIN sys.types AS t on pa.system_type_id = t.system_type_id AND pa.user_type_id = t.user_type_id WHERE p.name = @ProcedureName ORDER BY t.is_nullable DESC


select ''Parameter_name'' = name, ''Type'' = type_name(user_type_id), ''Length'' = max_length, ''Prec'' = case when type_name(system_type_id) = ''uniqueidentifier'' then precision else OdbcPrec(system_type_id, max_length, precision) end, ''Scale'' = OdbcScale(system_type_id, scale), ''Param_order'' = parameter_id, ''Collation'' = convert(sysname, case when system_type_id in (35, 99, 167, 175, 231, 239) then ServerProperty(''collation'') end) from sys.parameters where object_id = object_id(''MySchema.MyProcedure'')


select * from sys.parameters inner join sys.procedures on parameters.object_id = procedures.object_id inner join sys.types on parameters.system_type_id = types.system_type_id AND parameters.user_type_id = types.user_type_id where procedures.name = ''sp_name''


select t1.[name] as [SP_name],t2.[name] as [Parameter_name], t3.[name] as [Type],t2.[Length],t2.colorder as [Param_order] from sysobjects t1 inner join syscolumns t2 on t1.[id]=t2.[id] inner join systypes t3 on t2.xtype=t3.xtype where t1.[name]=''My_StoredProc_Name'' order by [Param_order]