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]);
  }

  //...
}

これを行うさまざまな方法を試しましたが、これら 2 種類のパラメーターを使用するたびに、char パラメーターが認識されません。文字パラメーターのみが考慮される場合、正しく機能しますが、そうでない場合はエラーが発生します

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

1 に答える 1