我有一个使用 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: date format picture ends before conversion整个输入字符串
有任何想法吗?