在对象表中插入对象时发生ORA-00909错误

时间:2018-10-19 13:09:51

标签: oracle insert oracle11gr2

在对象表中插入超类型的对象时出现错误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版。

谢谢。

1 个答案:

答案 0 :(得分:0)

我在您发布所有语句时都尝试了这些语句(复制粘贴)。无论是在12c和11gR2上。一切正常,两个插入。我唯一注意到的是您的create table有点不正确。这是正确的(但这不能解释您得到的错误)。 HTH KR

CREATE TABLE companies_objtab OF company (CIF PRIMARY KEY) OBJECT IDENTIFIER IS PRIMARY KEY;

也许尝试删除表并重新创建它。