【问题标题】:{"ORA-06502: PL/SQL: numeric or value error: character to number conversion error\nORA-06512: at line 1"}{"ORA-06502: PL/SQL: 数字或值错误: 字符到数字的转换错误\nORA-06512: 在第 1 行"}
【发布时间】:2019-06-22 22:27:51
【问题描述】:

我有一个用于将存储过程错误记录到 Oracle 数据库的文件,但在执行存储过程时出现错误

ORA-06502:PL/SQL:数字或值错误:字符到数字的转换错误
ORA-06512: 在第 1 行

之前我使用的是 Microsoft 企业日志记录,但现在我使用的是 oracle.managed.dataaccess。我的代码如下所示。

如何在我的新代码中解决这部分 false, (byte)0, (byte)0, (string)null, DataRowVersion.Default ?

【问题讨论】:

  • 它告诉您在某处您将'abc' 之类的值发送到数字字段。而且Oracle不能隐式转换它

标签: c# oracle stored-procedures oracle-manageddataaccess


【解决方案1】:

存储过程的第一个字段定义为

abcd OUT INT

但您将其绑定为

cmd = adapter.InputField(cmd, "abcd", logEntry.EventId, OracleDbType.Varchar2);

换句话说,abcd 被定义为INT,并且它是一个 OUTPUT 参数,但是您将它绑定为一个字符串 INPUT 参数。我没有走得更远。返回并检查所有绑定是否与参数匹配。

【讨论】:

  • 你是对的 Bob 它解决了这个问题。但现在我面临着其他一些问题,比如 {"Input string was not in a correct format."} 。我的旧代码是 db.AddParameter(storedProcCommand, "xyz", DbType.String, 32, ParameterDirection.Input, false, (byte)0, (byte)0, (string)null, DataRowVersion.Default, (object)logEntry。严重性.ToString());现在 cmd = adapter.InputField(cmd, "severity", logEntry.Severity.ToString(), OracleDbType.Varchar2);cmd.Parameters["severity"].Size = 32;
  • 我编辑了这个问题。请查看并提出解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多