我有一个使用DATE作为输入的简单存储过程:
CREATE OR REPLACE PROCEDURE delete_time(myTime DATE) IS
BEGIN
DELETE FROM mytable WHERE time = myTime;
END;
/
这已经使用函数导入添加到我的EDMX中,映射的类型是SSDL端的Date和CSDL上的DateTime。
问题是,当我使用DateTime从.NET运行程序时,小时和分钟会在某处丢失:
DateTime dt = new DateTime(2013, 4, 3, 12, 15, 00);
var timeParam = new ObjectParameter("myTime", dt) :
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("DeleteTime", timeParam);
这会运行存储过程,但会删除TIME = 03-APR-2013 00:00:00而不是03-APR-2013 12:15:00的行
Oracle客户端是否存在一些错误(我使用的是11.2.0.3.20)?或者我上面做错了什么?
我也尝试使用TIMESTAMP作为我的过程的输入类型,但是在调用函数时我得到了这个错误: ORA-01830:日期格式图片在转换整个输入字符串之前结束
有什么想法吗?
答案 0 :(得分:0)
尝试使用实体框架执行Oracle过程时遇到此问题。所以我这样做是为了传递一个Date参数:
var objects = _dbContext.Database.SqlQuery<MyObject>("BEGIN My_procedure(to_date('01/01/2016', 'dd/mm/yyyy hh24:mi:ss')); END;").ToList();