将日期传递给oracle函数将导致无效的月份

本文关键字:无效 函数 日期 oracle | 更新日期: 2023-09-27 17:55:02

我正在尝试从c#调用oracle函数,该函数定义为:

FUNCTION MyFunction(sDate DATE, toLoc VARCHAR2) RETURN VARCHAR2

我的代码是这样的:

cmd.CommandText = "MyFunction";
cmd.CommandType= CommandType.StoredProcedure;
OracleCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["SDATE"].Value = DateTime.Now
cmd.Parameters["TOLOC"].Value = "ABC";
cmd.ExecuteNonQuery();

我还尝试手动添加参数,将参数类型设置为OracleDbType.Date。我一直得到这个异常:

Oracle.DataAccess.Client.OracleException was caught
  HResult=-2147467259
  Message=ORA-01843: not a valid month
ORA-06512: at "MyFunction", line 102
ORA-06512: at line 1
  Source=Oracle Data Provider for .NET
  ErrorCode=-2147467259

将日期传递给oracle函数将导致无效的月份

cmd.Parameters["SDATE"].Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")更好吗?

您确定cmd.Parameters["SDATE"]的类型吗?Value是一个DateTime对象?请参考链接中的文档。它说它是一个Date对象。http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleDbTypeEnumerationType.htm