Параметризованная команда оракула c # - PullRequest
0 голосов
/ 13 июня 2011

У меня проблема с использованием параметризованной команды оракула. Кажется, команда распознает все строковые параметры (: Id,: CreateUser), но не символьный параметр (: Active).

string qry = @"Insert into GROUP_LOGIN 
               (
                GROUP_ID,
                CREATED_ON,
                ACTIVE_FLAG,
                CREATED_USER
               ) 
               values
               (
                :Id, 
                SYSDATE,
                :Active,
                :CreateUser
               )";

OracleCommand cmd = dal.GetOracleCommand();

if (cmd != null)
{
  cmd.CommandText = qry;
  OracleParameter op=   new OracleParameter("Active",OracleDbType.Char);
  op.Value = active;
  //cmd.Parameters.Add(op);

  OracleParameter[] myParams = new OracleParameter[]  
      { 
        new OracleParameter("Id", this.GrpID), 
        new OracleParameter("Description", this.Description),
        new OracleParameter("CreateUser", this.Create_User),
        new OracleParameter("Remarks", this.Remarks),
        op
      };

  for (int i = 0; i < myParams.Length; i++) 
  {
      cmd.Parameters.Add(myParams[i]);
  }

  //...
}

Я пробовал разные способы сделать это, но каждый раз, когда я использую эти два типа параметров, параметр char не распознается. Когда учитываются только параметры персонажа, он работает правильно, но в противном случае выдает ошибку

ORA-01400: cannot insert NULL into ("User"."GROUP_LOGIN"."ACTIVE_FLAG")

1 Ответ

0 голосов
/ 13 июня 2011

Вы устанавливаете (очевидно) нулевое значение с помощью op.Value = active;. Вы действительно убедились, что active действительно имеет какое-то значение? Исходя из этого кода, он может быть нулевым, и в этом случае сообщение об ошибке будет действительным.

...