2016-03-14 115 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));