Ошибка ORA-00909 при вставке объекта в таблицу объектов - PullRequest
0 голосов
/ 19 октября 2018

Я получаю ошибку 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 - «недопустимое количество аргументов»

Однако, когда я вставляюобъект подтипа inCourseCompany вставлен правильно:

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 голосов
/ 19 октября 2018

Я перепробовал все ваши заявления сразу после того, как вы их опубликовали (copy-paste).Оба на 12c и 11gR2.Все работало, обе вставки.Единственное, что я заметил, это то, что ваша таблица создания немного некорректна.Это правильный (но это не объясняет ошибку, которую вы получаете).HTH KR

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

Возможно, попробуйте сбросить таблицу и создать ее заново.

...