【问题标题】:Using Refs With Objects Stored In Tables将 Refs 与存储在表中的对象一起使用
【发布时间】:2015-12-15 22:30:37
【问题描述】:

我正在尝试使用 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

但是由于我想在表中存储除了对象之外的其他信息,所以有点问题。

【问题讨论】:

    标签: sql oracle plsql ref


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2021-03-13
      相关资源
      最近更新 更多