我有书面程序,其日期参数定义如下:
in_Spendpaidstartdt IN DATE,
in_Spendpaidenddt IN DATE,
在程序中我称这些参数为:
AND ( in_Spendpaidstartdt IS NULL
OR err.Spendpaiddt >= in_Spendpaidstartdt)
AND ( in_Spendpaidenddt IS NULL
OR err.Spendpaiddt <= in_Spendpaidenddt));
但是oracle发出以下错误:
“ORA-01861:文字与格式字符串不匹配”
有人请建议解决 .
2 回答
这是假的:
正如@XING已经提到的,你的问题是双重的 .
当你在's already a DATE - something I'已经提到elsewhere on stackoverflow的事情上使用
to_date
时,你强迫Oracle将DATE隐式转换回字符串!调用程序时(可能)没有正确传递参数 .
以下是我修改程序的方法:
为了测试,我会像你这样称呼你的程序:
注:在 生产环境 代码中使用“select *”是不好的做法 - 你应该明确指定你想要回来的列;这样,如果有人添加了一列,您的代码将不会导致某些内容中断,因为它不会传递该额外的列 .