Выберите переменные хранимой процедуры - PullRequest
0 голосов
/ 26 октября 2018

Есть ли способ выбрать переменные, которые получит хранимая процедура?

Например, у меня есть таблица клиентов, мой первичный ключ - длинная цифра.

Моя хранимая процедура называется SelectClientByKey и будет выглядеть примерно так:

select * 
from clients 
where clientId = @clientid

У меня есть много других хранимых процедур, и я хотел бы сделать запрос, который получает переменные, которые есть у хранимой процедуры, и ее типы данных.

Что-то вроде:

Select Variable, Type 
From StoredProcedure 
Where StoredProcedure.Name = 'SelectClientByKey'

Результат должен быть

@clientId bigInt

Я не уверен, если это возможно, любой совет?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Это возможно. Вы можете использовать приведенный ниже SQL-запрос для получения хранимой процедуры, списка параметров и его типа данных:

SELECT 
    o.name as StoredProcedure, p.name as Parameter, t.name as DataType
FROM 
    sys.all_objects o
JOIN
    sys.parameters p ON p.object_id = o.object_id
JOIN
    sys.types t ON t.system_type_id = p.system_type_id
WHERE 
    o.name = 'SelectClientByKey'    -- Your stored procedure name
0 голосов
/ 26 октября 2018

Бесстыдно похищен из здесь . Если вы запустите его, он предоставит вам список всех хранимых процедур и их параметров, а также некоторую полезную расширенную информацию.

SELECT
   SCHEMA_NAME(SCHEMA_ID) AS [Schema], 
   SO.name AS [ObjectName],
   SO.Type_Desc AS [ObjectType (UDF/SP)],
   P.parameter_id AS [ParameterID],
   P.name AS [ParameterName],
   TYPE_NAME(P.user_type_id) AS [ParameterDataType],
   P.max_length AS [ParameterMaxBytes],
   P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P 
   ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.OBJECT_ID IN (
   SELECT OBJECT_ID 
   FROM sys.objects
   WHERE TYPE IN ('P','FN')
)
ORDER BY [Schema], SO.name, P.parameter_id
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...