繁体   English   中英

为什么在尝试插入数据时出现此错误ORA-00904“ PBIRTHDATE”

[英]Why am I getting this error while trying to insert data ORA-00904 “PBIRTHDATE”

如果我在插入具有复杂数据类型的表时遇到语法错误,是否可以纠正我?

这是我的代码:

CREATE TYPE ADDR AS OBJECT (
    street VARCHAR2(32),
    city VARCHAR2(32),
    zip NUMBER(32)
);

CREATE TYPE NAMES AS OBJECT(
    firstname VARCHAR2(64),
    lastname VARCHAR2(64)
);

CREATE TABLE PERSON(
    pid NUMBER(10),
    pname NAMES,
    paddr ADDR,
    pbirthdate DATE
);

INSERT INTO PERSON
VALUES (1, pname('John','Doe'), paddr('None','Test',51050), TO_DATE('33445555', 'MMDDYYY'));

初始化对象类型的实例时,需要指定类型名称 ,而不是列名称。 您还应该始终在INSERT语句中指定目标列。

INSERT INTO PERSON 
  (pid, pname, paddr, pbirthdate)
VALUES 
  (1, names('John','Doe'), addr('None','Test',51050), TO_DATE('33445555', 'MMDDYYY'));
      ^                    ^ 
      | here               | here

此外,给定格式掩码MMDDYYY'33445555是无效日期MMDDYYY'

错误消息明确指出:

TO_DATE('33445555', 'MMDDYYY')

当我在本地测试时尝试在查询中使用它时,出现以下错误消息:

ORA-01843:无效月份

您指定的日期无效,因为没有第33个月。 尝试使用有效日期,该错误应消失:

TO_DATE('06242019', 'MMDDYYYY')

TYPE用法和日期存在问题:

INSERT INTO PERSON
VALUES (1, NAMES('John','Doe'), ADDR('None','Test',51050), TO_DATE('06242019', 'MMDDYYYY'));

Db小提琴演示

干杯!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM