sp_getProcedureColumns - PullRequest
       0

sp_getProcedureColumns

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

Я попытался передать имя процесса в methodNamePattern, и процедура, кажется, возвращает все метаданные для всех процедур.Я передаю пустую строку и получаю те же результаты.

Используется следующий код:

using (AdsCommand command = new AdsCommand { CommandText = "sp_getProcedureColumns", 
                                             Connection = connection, 
                                             CommandType = CommandType.StoredProcedure })
{
   AdsParameter param = new AdsParameter("@procedureNamePattern", DbType.String) { 
     Direction = ParameterDirection.Input, Value = originalProcedureName };
   command.Parameters.Add(param);

   AdsParameter param0 = new AdsParameter("@catalog", DbType.String) { 
       Direction = ParameterDirection.Input, Value = null };
   command.Parameters.Add(param0);

   AdsParameter param1 = new AdsParameter("@schemaPattern", DbType.String) { 
       Direction = ParameterDirection.Input, Value = null };
   command.Parameters.Add(param1);

   AdsParameter param2 = new AdsParameter("@columnNamePattern", DbType.String) { 
       Direction = ParameterDirection.Input, Value = null };
   command.Parameters.Add(param2);

1 Ответ

0 голосов
/ 26 августа 2010

С помощью хранимых процедур вы можете использовать метод DeriveParameters.Это может сделать это проще.Ниже приведен пример:

AdsCommand cmd = conn.CreateCommand();    
cmd.CommandText = "sp_getProcedureColumns";
cmd.CommandType = CommandType.StoredProcedure;
cmd.DeriveParameters();
cmd.Parameters["ProcedureNamePattern"].Value = "MyProcName";
AdsDataReader rdr = cmd.ExecuteReader();

Если не вызывать метод DeriveParameters, то генерируемый базовый оператор SQL создается непосредственно из предоставленных параметров в указанном порядке.Это означает, что вам нужно будет предоставить параметры в порядке, соответствующем определению процедуры.В этом случае параметр PracticeNamePattern должен быть третьим.Если вы измените порядок вызовов cmd.Parameter.Add(), ваш первоначальный пример должен сработать.

...