Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误:';ORA-01438:大于此列允许的指定精度的值';故障因素:';空';详情:org.kxml2.kdom。Node@99c0b9c_C#_Oracle - Fatal编程技术网

C# 错误:';ORA-01438:大于此列允许的指定精度的值';故障因素:';空';详情:org.kxml2.kdom。Node@99c0b9c

C# 错误:';ORA-01438:大于此列允许的指定精度的值';故障因素:';空';详情:org.kxml2.kdom。Node@99c0b9c,c#,oracle,C#,Oracle,我正在尝试使用c#更新oracle表记录。当我执行代码SoapFault-faultcode:'a:InternalServiceFault'faultstring:'ORA-01438:值大于此列'faultactor:'null'允许的指定精度详细信息:org.kxml2.kdom时,我遇到此错误。Node@99c0b9c. 这是我在服务端使用的代码: [OperationContract] public int pushData(string CustomObjects) { Li

我正在尝试使用c#更新oracle表记录。当我执行代码SoapFault-faultcode:'a:InternalServiceFault'faultstring:'ORA-01438:值大于此列'faultactor:'null'允许的指定精度详细信息:org.kxml2.kdom时,我遇到此错误。Node@99c0b9c.

这是我在服务端使用的代码:

[OperationContract]

public int pushData(string CustomObjects)
{

  List<CustomObject> myDeserializedObjList = (List<CustomObject>)Newtonsoft.Json.JsonConvert.DeserializeObject(CustomObjects, 
  typeof(List<CustomObject>));
  string constr = "my connection string";
  int rowid = 0;
  using(OracleConnection con = new OracleConnection(constr)){

  con.Open();
  OracleCommand cmd = new OracleCommand();
  cmd.Connection = con;
  cmd.CommandType = CommandType.Text;

   foreach (CustomObject element in myDeserializedObjList)
   {

      int num = element.num;

      string mydate = element.mydate;

      long num2 = element.num2;

      string user = element.user;


      string sqlStatement= "UPDATE CustomObjectS SET  num = :num, 
      mydate=:to_date(:mydate, 'YYYY/MM/DD HH:MI:SS'), num2=:num2, user=:user  WHERE num =:num";
      OracleTransaction myTrans;

      // Start a local transaction
      myTrans = con.BeginTransaction();
      // Assign transaction object for a pending local transaction
      cmd.Transaction = myTrans;
      cmd.CommandText=sqlStatement;
      cmd.Parameters.Add(new OracleParameter("num", num));
      cmd.Parameters.Add(new OracleParameter("user", user));
      cmd.Parameters.Add(new OracleParameter("num2", num2));
      cmd.Parameters.Add(new OracleParameter("mydate", mydate));
      cmd.Parameters[3].Value = mydate;


              rowid= cmd.ExecuteNonQuery();

              myTrans.Commit();



      }


      }


  return rowid;

      }
[运营合同]
公共int pushData(字符串自定义对象)
{
List myDeserializedObjList=(List)Newtonsoft.Json.JsonConvert.DeserializeObject(CustomObjects,
(列表)的类型;
string constr=“我的连接字符串”;
int-rowid=0;
使用(OracleConnection con=新的OracleConnection(cont)){
con.Open();
OracleCommand cmd=新的OracleCommand();
cmd.Connection=con;
cmd.CommandType=CommandType.Text;
foreach(myDeserializedObjList中的CustomObject元素)
{
int num=element.num;
字符串mydate=element.mydate;
长num2=element.num2;
字符串user=element.user;
string sqlStatement=“更新自定义对象集num=:num,
mydate=:to_date(:mydate,'yyyyy/MM/DD HH:MI:SS'),num2=:num2,user=:user,其中num=:num”;
oracletrans;
//启动本地事务
myTrans=con.BeginTransaction();
//为挂起的本地事务分配事务对象
cmd.Transaction=myTrans;
cmd.CommandText=sqlStatement;
Add(新的OracleParameter(“num”,num));
cmd.Parameters.Add(新的OracleParameter(“user”,user));
添加(新的OracleParameter(“num2”,num2));
Add(新的OracleParameter(“mydate”,mydate));
cmd.Parameters[3]。Value=mydate;
rowid=cmd.ExecuteNonQuery();
myTrans.Commit();
}
}
返回rowid;
}
你能帮忙吗

ORA-01438:大于指定精度的值允许此操作 纵队

此错误在INSERT或UPDATE语句期间出现。这意味着,您试图为一列指定的值超出了为此列定义的精度。

一个简单的例子:

CREATE TABLE abc1(
  x NUMBER(5)
);


INSERT INTO abc1( x ) values (123456 );
ORA-01438: value larger than specified precision allowed for this column


INSERT INTO abc1( x ) values (12345 ); 
1 row inserted.

您可以做什么:

  • 为列指定较小的精度值(不要指定太大的数字)
  • 更改表的定义,以允许列中的数字精度更高。这可以通过ALTERTABLE语句完成

ORA-01438:大于指定精度的值允许此操作 纵队

此错误在INSERT或UPDATE语句期间出现。这意味着,您试图为一列指定的值超出了为此列定义的精度。

一个简单的例子:

CREATE TABLE abc1(
  x NUMBER(5)
);


INSERT INTO abc1( x ) values (123456 );
ORA-01438: value larger than specified precision allowed for this column


INSERT INTO abc1( x ) values (12345 ); 
1 row inserted.

您可以做什么:

  • 为列指定较小的精度值(不要指定太大的数字)
  • 更改表的定义,以允许列中的数字精度更高。这可以通过ALTERTABLE语句完成


CustomObjectS
的定义是什么?
num
num2
的数据类型(在数据库中)是什么?它们的类型是数字
CustomObjectS
的定义是什么?
num
num2
的数据类型(在数据库中)是什么?它们的类型是数字