这里是 Oracle 8。
将日期传递给过程时,我可以传递一个 '' 而不会抛出任何内容。
测试MYDATE := ''
不评估为真。 LENGTH < 1
也没有. DBMS_OUTPUT 显示没有任何内容通过参数。
试图通过 '01-30-2009' (instead of 30-JAN-2009)
抛出无效日期错误。
传递零长度字符串如何有效?
如何测试有效日期?
请您参考如下方法:
在更高版本的 Oracle 中,空字符串被认为与 NULL 相同。这可能就是您遇到的问题。
您可以将参数设置为非空,然后它应该会出错。 (正如 Jeffery Kemp 在评论中指出的那样,您不能对参数使用 not null)
就无效日期错误而言,如果字符串的格式为 dd-mmm-yyyy,Oracle 会将其隐式转换为日期。否则,您将不得不使用适当的掩码在 to_date 中运行它。
我不熟悉 Oracle 8,所以我不确定有什么新东西。希望这会有所帮助。