参数化的oracle命令c#



我在使用参数化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")

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

最新更新