如果我在插入具有复杂数据类型的表时遇到语法错误,有人可以纠正我吗?
这是我的代码:
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'));
答案 0 :(得分:2)
初始化对象类型的实例时,需要指定类型名称,而不是列名称。您还应该始终在INSERT语句中指定目标列。
INSERT INTO PERSON
(pid, pname, paddr, pbirthdate)
VALUES
(1, names('John','Doe'), addr('None','Test',51050), TO_DATE('33445555', 'MMDDYYY'));
^ ^
| here | here
此外,33445555
是给定格式掩码MMDDYYY'
的无效日期
答案 1 :(得分:1)
错误消息明确指出:
TO_DATE('33445555', 'MMDDYYY')
当我在本地测试时尝试在查询中使用它时,出现以下错误消息:
ORA-01843:无效的月份
您指定的日期无效,因为没有第33个月。尝试使用有效日期,该错误应消失:
TO_DATE('06242019', 'MMDDYYYY')
答案 2 :(得分:0)
TYPE用法和日期存在问题
INSERT INTO PERSON
VALUES (1, NAMES('John','Doe'), ADDR('None','Test',51050), TO_DATE('06242019', 'MMDDYYYY'));
干杯!