01847. 00000 - "每月的日期必须介于1和1的最后一天之间"

时间:2017-02-07 09:13:27

标签: oracle plsql

create or replace procedure new_user as
begin
fnd_user_pkg.createuser('BOBBY','oracle123',TO_DATE('7-FEB-2017'),NULL,TO_DATE('20-02-17'),'80','78960','bobby@gmail.com');
end;

我使用以下命令调用上述过程:

exec new_user();

程序成功符合,但遇到执行错误时:

  

从命令行7开始出错 - BEGIN new_user();结束;错误   报告 - ORA-01847:每月的日期必须在1到最后一天之间   月ORA-06512:at" APPS.NEW_USER",第3行ORA-06512:第1行   01847. 00000 - "每月的日期必须介于1和1的最后一天之间"
  *原因:
  *操作:

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您的to_date中有多种格式,但未对其进行定义。

create or replace procedure new_user as
begin
fnd_user_pkg.createuser('BOBBY',
                        'oracle123',
                        TO_DATE('7-FEB-2017', 'D-MON-YYYY', 'NLS_DATE_LANGUAGE=AMERICAN'), -- definition here, 'NLS_DATE_LANGUAGE=AMERICAN' can be omitted if your language is set to English
                        NULL,
                        TO_DATE('20-02-17','DD-MM-YY'), -- definition here
                        '80',
                        '78960',
                        'bobby@gmail.com');
end;

答案 1 :(得分:0)

此错误可能是因为formatting of the to_date() function

以下是一些参考资料:

 to_date('29-Oct-09', 'DD-Mon-YY')
 to_date('10/29/09', 'MM/DD/YY')
 to_date('120109', 'MMDDYY')
 to_date('29-Oct-09', 'DD-Mon-YY HH:MI:SS') 
 to_date('Oct/29/09', 'Mon/DD/YY HH:MI:SS')
 to_date('October.29.2009', 'Month.DD.YYYY HH:MI:SS')

您也可以参考this link进一步参考。

希望这有帮助!