使用Refs与存储在表中的对象

时间:2015-09-18 17:20:00

标签: sql oracle plsql ref

我正在尝试使用refs来链接表之间的对象。如下所示。

CREATE OR REPLACE TYPE TYP_REFT AS OBJECT 
(A NUMBER, B NUMBER);
/
CREATE TABLE REFTT
(
  ref_id number,
  my_reft typ_reft
)
/
CREATE TABLE REFTAB
(ID    REF    TYP_REFT);
/
INSERT INTO REFTT VALUES (typ_reft(1,2));
/
INSERT INTO REFTAB
SELECT REF(T.my_reft) FROM REFTT T
/
SELECT * FROM REFTAB;

但这不起作用。给我错误

Error starting at line : 18 in command -
INSERT INTO REFTAB
SELECT REF(T.my_reft) FROM REFTT T
Error at Command Line : 19 Column : 12
Error report -
SQL Error: ORA-00904: "T"."MY_REFT": invalid identifier
00904. 00000 -  "%s: invalid identifier"

如果通过说

表REFTT,它可以正常工作
CREATE TABLE REFTT OF TYP_REFT

但是,由于除了对象之外我还希望将其他信息存储在表格中,这有点问题。

1 个答案:

答案 0 :(得分:1)

REF reference

REF将与对象表的一行关联的表别名作为其参数。

CREATE TABLE REFTT OF TYP_REFT

如果你创建了TYPE_REFT的REFTT表,那么你的代码就可以正常工作了。您可以在REFTAB中存储其他信息。

CREATE TABLE REFTAB
(ID    REF    TYP_REFT,
 MOREINFO VARCHAR2(20));


INSERT INTO REFTAB
  SELECT REF(T), 'BIGTIME'
    FROM REFTT T;