在 Oracle 中,我在包中有一个函数:function get_trans ( in_idcard in number, in_datefrom in date, in_dateto in date)return trans_rec_list parallel_enable pipelined;如果我像这样通过 SQL Developer 调用 func:select field1, field12 from table(API.get_trans(1,TO_DATE('01/06/2018 00:00:00'), TO_DATE('21/06/2018 00:00:00')));一切正常,但是当我像这样从 C# .net Core 调用函数时:using (OracleConnection connection = new OracleConnection("MyConnectionString")) { connection.Open(); using (OracleCommand cmd = connection.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = String.Format("select field1, field12 from table(API.get_trans({0}, TO_DATE('{2}'), TO_DATE('{3}')))", 1, dates.Date_From.ToString("dd-MM-yyyy HH:mm:ss"), dates.Date_To.ToString("dd-MM-yyyy HH:mm:ss")); OracleDataReader er = cmd.ExecuteReader();我有错误 ORA-01843: not a valid month最后,如果我只是从cmd.CommandTextSQL Developer复制文本并在其中运行 - 一切正常另一个类似的函数不使用类型date参数也能很好地工作问题出在哪里?
1 回答
动漫人物
TA贡献1815条经验 获得超10个赞
您需要定义日期格式以独立于环境的 NLS 设置。所以,而不是TO_DATE('01/06/2018 00:00:00')
你应该使用TO_DATE('01/06/2018 00:00:00', 'dd/mm/yyyy hh24:mi:ss')
- 1 回答
- 0 关注
- 226 浏览
添加回答
举报
0/150
提交
取消