Поиск метаданных SQL Server 2005 для получения параметров хранимых процедур - PullRequest
3 голосов
/ 23 августа 2010

Как получить список входных параметров для хранимой процедуры с использованием метаданных в SQL Server 2005? Я хочу сделать SELECt на нем, а затем перебрать имена переменных.

Ответы [ 3 ]

5 голосов
/ 23 августа 2010

начать здесь

select * from information_schema.PARAMETERS
where SPECIFIC_NAME = 'YourStoredProcedureName'
order by ORDINAL_POSITION

искать имя_параметра, тип_данных, параметр_мод

1 голос
/ 23 августа 2010

Собственный путь к SQL-серверу:

select      type_name(system_type_id) as type_name
              , parameter_id
              , name
              , max_length
from          sys.parameters
where        object_id = object_id(N'{schema}.{name}');
0 голосов
/ 23 августа 2010

Ударь задницу !!!!!

Я использовал его для генерации параметров ADO для классической рутинной работы. Вы спасли меня часы! измените PROCEDURE dbo.createParms @procname VARCHAR (200) как

SELECT 'dbCommand.Parameters.Append (dbCommand.CreateParameter("'+ parameter_name + '"' + 
    ',' 
    + CASE WHEN data_type='char' THEN 'adChar'
    WHEN data_type='varchar' THEN 'adVarChar'
    WHEN data_type='int' THEN 'adInteger'
    WHEN data_type='text' THEN 'adLongVarchar'
    WHEN data_type='datetime' THEN 'adDBTimeStamp'
    WHEN data_type='bit' THEN 'adBoolean'
    WHEN data_type='uniqueidentifier' THEN 'adGuid'
    end
    +',adParamInput,'
    +CASE WHEN data_type='int' THEN '0' 
        WHEN  data_type='datetime' THEN '0'
        WHEN data_type='varchar' THEN CONVERT(VARCHAR,character_maximum_length)
        WHEN data_type='char' THEN CONVERT(VARCHAR,character_maximum_length)
        WHEN data_type='text' THEN 'len('+replace(parameter_name,'@','')+')'
        WHEN data_type='bit' THEN '0'
        WHEN data_type='uniqueidentifier' THEN '0'
     end
    + ','+replace(parameter_name,'@','') +'))' AS parm
from information_schema.PARAMETERS
where SPECIFIC_NAME = @procname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...