2016-03-14 111 views
0

在这里我有两个参考对象表,至此表没有任何错误:如何插入对象表?

CREATE TABLE venues (
venue_id    NUMBER(6), 
venue_name   VARCHAR2(30), 
address    REF address_type SCOPE IS addresses, 
venue_type   REF venue_type SCOPE IS venue_table_type, 
provision   provision_table_type) 
NESTED TABLE provision STORE AS provision_table; 

然而,一旦我尝试使用这个命令插入到这个表:

INSERT INTO venues (venue_id, venue_name, address, venue_type, provision) 
VALUES (seq_venues.NEXTVAL, 'O2', address_type('PENINSULA SQUARE', 'LONDON', 'LONDON', 'SE10 0DX'), 
venue_type(20000, 'A MULTI-PURPOSE INDOOR ARENA LOCATED IN THE CENTRE OF LONDON.'), 
    provision_table_type(
    provision_type('BBQ'), 
    provision_type('RESTAURANTS'), 
    provision_type('TOILETS'))); 

我出现以下错误:

ERROR位于第2行: 不一致dataptypes:预计REF SYS.ADDRESS_TYPE了SYS.ADDRESS_TYPE

我想我不正确地插入到引用的对象表中,并希望得到一些指导正确的方式做到这一点。

感谢

+1

能否请您与您正在使用的实际DBMS标签呢? 'SQL'只是一种语言。 –

回答

0

一个REF必须引用现有的行中的表。例如:

create type address_type is object (a number); 
create table addresses of address_type; 
insert into addresses values(address_type(1)); 
commit; 

create table venues 
(
    venue_name VARCHAR2(30), 
    address REF address_type SCOPE IS addresses 
); 

insert into venues 
values('Name', (select ref(addresses) from addresses addresses where a = 1));