Conn=new OracleConnection("data source=ora28;user id=28;password=28");
Conn.Open();
OracleCommand cmdAddExam=new OracleCommand();
cmdAddExam.Connection=Conn; cmdAddExam.CommandText="update FXGL_QUESTION set Q_REMARK=:Q_REMARK where Q_ID ="+ Convert.ToInt32(txtQ_id.Text); cmdAddExam.Parameters.Add(":Q_REMARK",OracleType.VarChar);
cmdAddExam.Parameters[":Q_REMARK"].Value=OracleString.Empty;
// cmdAddExam.Parameters[":Q_REMARK"].Value=txtQ_Re.Text.Trim() ;
'这里
'空字符串就报错:Parameter ':Q_REMARK': No size set for variable length data type: String. cmdAddExam.ExecuteNonQuery();
cmdAddExam.Parameters.Clear();
Conn.Close();}
catch(Exception ex)
{
Response.Write(ex.Message);
}

解决方案 »

  1.   

    -- Create table
    create table FXGL_QUESTION
    (
      Q_ID           NUMBER(4) not null,
      Q_REMARK       VARCHAR2(200),
    )
    定义表的时候Q_REMARK可以为空,update FXGL_QUESTION set Q_REMARK =''在SQL/PLUS中可以通过
      

  2.   

    No size set for variable length data type: String解决办法 
     
    Oracle数据库采用insert和updata语句在处理空字符串时会抛出异常:
     
    未处理的“System.Exception”类型的异常出现在 system.data.dll 中。
    其他信息: Parameter ':备注': No size set for variable length data type: String.
     
    事情的起因是OracleCommand的参数没有赋予适当的Size属性,它采用的是默认值0。但是当执行update时给它赋""时,会抛出异常。
    需要显式赋值,如:oraParam.Size = 10;
    还有没有别的办法?