表结构CREATE TABLE "HY-WYH"."TEST_TABLE" 
   ( "ID" NUMBER(*,0), 
"NAME" VARCHAR2(4000 CHAR)
   )修改代码OracleConnection conn = new OracleConnection(GetConnectString());
OracleCommand cmd = conn.CreateCommand();
conn.Open();
cmd.CommandType=System.Data.CommandType.Text;
cmd.Parameters.Add(new OracleParameter("ID",OracleDbType.Int64)); // ID应该选什么类型
cmd.Parameters.Add(new OracleParameter("NAME", OracleDbType.Varchar2));
cmd.Parameters["ID"].Value=ID;
cmd.Parameters["NAME"].Value=Name;
cmd.CommandText="UPDATE TEST_TABLE SET \"NAME\"=:NAME WHERE \"ID\" = :ID";
//执行时引发如下异常
//Oracle.DataAccess.Client.OracleException ORA-01722: invalid number
int res = cmd.ExecuteNonQuery();oraclec#数据类型Number

解决方案 »

  1.   

    OracleDbType中没有Number类型,只有Decimal,即使上面将ID参数代码改为Decimal类型,也不行。
      

  2.   

    值传过去了
    cmd.Parameters["ID"].Value=ID; //在此处ID=1;我现在就是不明白ORACLE中Number到底对应OracleDbType中的什么类型
      

  3.   

    把赋值顺序修改:string sql = "update  student set stuName=:stuName where stuNum=:stuNum";
                Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(sql, con);
                
                cmd.Parameters.Add("stuName", OracleDbType.Varchar2, 10).Value = txtStuName.Text.Trim();
                cmd.Parameters.Add("stuNum", OracleDbType.Decimal, 8).Value =txtStuNum.Text.Trim();  //要注意按SQL参数顺序赋值,否则报错:ORA-01722: invalid number