在对象表中插入超类型的对象时出现错误ORA-00909。这些是对象的定义:
CREATE OR REPLACE TYPE address AS OBJECT (
street VARCHAR(20),
country VARCHAR(20),
province VARCHAR(20),
city VARCHAR2(20),
zipcode VARCHAR(10)
) FINAL;
CREATE OR REPLACE TYPE company AS OBJECT (
CIF VARCHAR2(9),
code VARCHAR2(10),
name VARCHAR2(20),
signUpDate DATE,
email VARCHAR2(20),
adminAddress address
) NOT FINAL;
CREATE OR REPLACE TYPE inCourseCompany UNDER company (
postalAddress address,
numEmployees NUMBER
) FINAL;
对象表:
CREATE TABLE companies_objtab OF company (PRIMARY KEY CIF) OBJECT IDENTIFIER IS PRIMARY KEY;
我尝试使用以下语句插入对象:
INSERT INTO companies_objtab VALUES (
company('J12345678','000001','Test Company',TO_DATE(sysdate, 'dd/mm/yyyy hh24:mi:ss'),'',address('','','','',''))
);
我收到错误错误
SQL:ORA-00909:参数数目无效 00909. 00000-“参数数量无效”
但是,当我在CourseCompany中插入子类型的对象时,它会正确插入:
INSERT INTO companies_objtab VALUES (
inCourseCompany('G11111111','','',TO_DATE(sysdate, 'dd/mm/yyyy hh24:mi:ss'),'',address('','','','',''), address('','','','',''), 100)
);
有关导致错误的原因的任何提示?
我正在使用Oracle SQL Developer 4.0.2.15.21和Oracle Database Express Edition 11g第2版。
谢谢。
答案 0 :(得分:0)
我在您发布所有语句时都尝试了这些语句(复制粘贴)。无论是在12c和11gR2上。一切正常,两个插入。我唯一注意到的是您的create table有点不正确。这是正确的(但这不能解释您得到的错误)。 HTH KR
CREATE TABLE companies_objtab OF company (CIF PRIMARY KEY) OBJECT IDENTIFIER IS PRIMARY KEY;
也许尝试删除表并重新创建它。