首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL错误: ORA-01843:无效月份

SQL错误: ORA-01843:无效月份
EN

Stack Overflow用户
提问于 2017-10-12 04:34:32
回答 1查看 1.7K关注 0票数 0

当我运行下面的插入命令时,我正在接收ORA-01843。我的密码有什么问题吗?并获得以下错误消息:

SQL错误:

代码语言:javascript
复制
ORA-01843: not a valid month
ORA-06512: at "MDSYS.SUPERHEROES_AUDIT", line 8
ORA-04088: error during execution of trigger 'MDSYS.SUPERHEROES_AUDIT'
01843. 00000 -  "not a valid month"

我的声明似乎有什么问题?谢谢。

代码语言:javascript
复制
 /* TABLE CREATED */

    CREATE TABLE EVENTLOGS(
        Eventlog_id   Number(3,0)   NOT NULL,
        User_name     Varchar2(20),
        Date_done     Date,
        Action_done   Varchar2(50),
    CONSTRAINT PK_EVENTLOGS PRIMARY KEY (Eventlog_id));

    /* SEQUENCE CREATED */

    CREATE SEQUENCE EVENTLOG_ID_SEQ
      MINVALUE 1
      START WITH 1
      INCREMENT BY 1
      NOCYCLE
      CACHE 10;

    /* TRIGGER CREATED */

    CREATE OR REPLACE TRIGGER SUPERHEROES_AUDIT
    AFTER INSERT OR DELETE OR UPDATE ON SUPERHEROES
    FOR EACH ROW
    ENABLE
    DECLARE
      V_LOGID NUMBER;
      V_USER  VARCHAR(30);
      V_DATE  VARCHAR(30);
    BEGIN
      SELECT EVENTLOG_ID_SEQ.NEXTVAL, USER, TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') INTO V_LOGID, V_USER, V_DATE FROM DUAL;
      IF INSERTING THEN
        INSERT INTO EVENTLOGS(Eventlog_id, User_name, Date_done, Action_done)
        VALUES (V_LOGID, V_USER, V_DATE, 'INSERT');
    END IF;
    END;
    /


    INSERT INTO SUPERHEROES VALUES ('TEST');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-12 04:54:07

表中的列定义为

代码语言:javascript
复制
Date_done     Date,

将日期存储到VARCHAR2变量中。

代码语言:javascript
复制
V_DATE  VARCHAR(30);
....
SELECT EVENTLOG_ID_SEQ.NEXTVAL, USER, 
TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') INTO V_LOGID, V_USER, V_DATE
...

将这个变量插入到DATE列中。

代码语言:javascript
复制
...
VALUES (V_LOGID, V_USER, V_DATE, 'INSERT');

保持datatype的一致性以避免混淆。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46701475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档