我正在开发一个简单的应用程序,用于了解oracle和数据库对象与对象和变量的关系......我做了下一个代码:
这是我的varrays
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
我不明白为什么我会收到这个错误并且不知道我是否有错误
答案 0 :(得分: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
如果您想要object table,那么您就不能拥有评论中提到的varray
列:
create table cargos of cargo1
(
primary key(id_cargo)
);