0

我在使用参数化的 oracle 命令时遇到问题。该命令似乎可以识别所有字符串参数(: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")
4

1 回答 1

0

你用 设置(显然)空值op.Value = active;,你确定它active确实有一些价值吗?根据此代码,它可能为 null,并且错误消息在这种情况下有效。

于 2011-06-13T06:03:09.127 回答