将日期传递给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
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