Несогласованные типы данных: ожидаемый CHAR получил REF

avatar
Thiago Cavalcanti
8 августа 2021 в 17:52
138
1
1
CREATE TYPE empresa_type AS OBJECT (
    CNPJ INTEGER, 
    nome_fantasia VARCHAR2(30), 
    pais VARCHAR2(25),
    fundacao DATE
)

CREATE TYPE funcionario_type AS OBJECT (
    CPF INTEGER, 
    nome VARCHAR2(30), 
    sexo CHAR(1), 
    nasc DATE,
    empresa REF empresa_type
)

CREATE TABLE empresa_tab OF empresa_type (PRIMARY KEY(CNPJ))
CREATE TABLE funcionario_tab OF funcionario_type (PRIMARY KEY(CPF), FOREIGN KEY(empresa) REFERENCES empresa_tab)

сообщить об ошибке: ORA-00932: несогласованные типы данных: ожидаемый CHAR получил REF MY_WKSP.EMPRESA_TYPE

Источник
mathguy
8 августа 2021 в 20:09
0

Я не могу воспроизвести вашу ошибку; в моей системе с Oracle 12.2.0.1 все операторы выполняются без ошибок. Какая у вас версия Оракла? Запустите select banner from v$version, в первой строке вывода должна быть указана ваша точная версия Oracle.

Thiago Cavalcanti
9 августа 2021 в 02:13
0

Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 — производственная версия

Ответы (1)

avatar
MT0
8 августа 2021 в 19:23
0

Вы хотите создать таблицу, а затем добавить к ссылке SCOPE (вместо того, чтобы пытаться определить ее как внешний ключ, потому что это не так):

CREATE TABLE funcionario_tab OF funcionario_type (
  PRIMARY KEY(CPF)
);

ALTER TABLE funcionario_tab ADD SCOPE FOR ( empresa ) IS empresa_tab;

дб<>скрипка здесь

Thiago Cavalcanti
9 августа 2021 в 01:54
0

Та же ошибка возникает, если я делаю это таким образом.