我将日期传递给Oracle存储过程。我一直在努力获得上述异常。我猜的那个例外是由我不正确的dateTime格式引起的。存储过程需要日期的军事时间,格式为28-Dec-12 11:29:59。存储过程采用字符串并将它们转换为存储过程中的正确时间...以下是我如何设置正确的参数......
cmd.Parameters.Add(colName[i], DateTime.Parse(trueDateStr).ToString("dd-MMM-yy HH:mm:ss"));
给我消化不良的一个存储过程参数就是这个......
ACTIVE_DATEIn
to_date(ACTIVE_DATEin,'DD-MON-YY')
第二行是稍后在存储过程中的一行...第一行是传入的实际参数。有时候该参数可能为null ...我做的是检查它是否是null,然后我传入一个空字符串...那个空字符串会导致错误吗?我应该传递一些Null Date值或空日期值吗?你对此有何看法?
答案 0 :(得分:3)
最有可能的问题是,您传递的是包含日期和时间的字符串,而Oracle只需要日期部分。这正是错误消息所说的(在成功解析日期部分之后,输入字符串中仍然存在字符但不是日期格式):
ORA-01830:日期格式图片在转换整个输入字符串之前结束
所以修复可能是:
cmd.Parameters.Add(colName[i], DateTime.Parse(trueDateStr).ToString("dd-MMM-yy"));
传入一个空字符串表示NULL是可以的。 Oracle将空字符串视为NULL,TO_DATE
函数处理NULL值就好了。
答案 1 :(得分:0)
如果您使用错误的format_mask调用to_date
,可能会出现此错误,请参阅here。请改用以下语句
to_date(ACTIVE_DATEin, 'DD-MON-YY HH24:MI:SS')