1

オブジェクトと varray を使用して、オラクルとデータベースのオブジェクト リレーショナルについて学習するための簡単なアプリを開発しています... 次のコードを実行しました。

これは私の変数です

SQL> create or replace type software_va as varray(3) of varchar2(30);
2 /

ここに私が作成したオブジェクトがあります:

SQL> create or replace type cargo1 as object(
 2  id_cargo number,
 3  nom_cargo varchar2(20),
 4  suc ref sucursal);
 5  /

この方法でテーブルを作成しようとすると:

SQL> create table cargos of cargo1(
2  primary key(id_cargo),
3  manejosoft software_va);

このエラーが発生しました:

ERROR en line 3:
ORA-02330: datatype specification not allowed

このエラーが発生した理由がわかりません。また、何か問題があるかどうかもわかりません

4

1 に答える 1

0

objectと の両方の列を持つリレーショナル テーブルが必要な場合はvarray、これが機能し、オブジェクトの ID に基づく主キーが引き続き含まれます。

create table cargos
(
    cargo cargo1,
    manejosoft software_va,
    constraint cargos_pk primary key (cargo.id_cargo)
);

Table created.

insert into cargos values (cargo1(1, 'test'), software_va('a', 'b', 'c'));

1 row created.

insert into cargos values (cargo1(1, 'dup test'), software_va('d', 'e', 'f'));

insert into cargos values (cargo1(1, 'dup test'), software_va('d', 'e', 'f'))
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.CARGOS_PK) violated

select * from cargos;

CARGO(ID_CARGO, NOM_CARGO)
--------------------------------------------------------------------------------
MANEJOSOFT
--------------------------------------------------------------------------------
CARGO1(1, 'test')
SOFTWARE_VA('a', 'b', 'c')

select c.cargo.nom_cargo
from cargos c
where c.cargo.id_cargo = 1;

CARGO.NOM_CARGO
--------------------
test

オブジェクトテーブルが必要な場合はvarray、コメントに記載されている列を使用できませんでした:

create table cargos of cargo1
(
    primary key(id_cargo)
);
于 2012-09-12T16:29:14.713 に答える