将 Refs 与存储在表中的对象一起使用
Using Refs With Objects Stored In Tables
我正在尝试在 table 之间使用对 link 对象的引用。类似于以下内容。
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"
如果 table REFTT 是通过说
CREATE TABLE REFTT OF TYP_REFT
但是由于我想在 table 中存储除对象之外的其他信息,所以有点问题。
REF 将与对象的一行关联的 table 别名作为其参数 table。
CREATE TABLE REFTT OF TYP_REFT
如果您创建 TYPE_REFT 的 REFTT table,那么您的代码将如您所说的那样工作。您可以在 REFTAB 中存储其他信息。
CREATE TABLE REFTAB
(ID REF TYP_REFT,
MOREINFO VARCHAR2(20));
INSERT INTO REFTAB
SELECT REF(T), 'BIGTIME'
FROM REFTT T;
我正在尝试在 table 之间使用对 link 对象的引用。类似于以下内容。
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"
如果 table REFTT 是通过说
CREATE TABLE REFTT OF TYP_REFT
但是由于我想在 table 中存储除对象之外的其他信息,所以有点问题。
REF 将与对象的一行关联的 table 别名作为其参数 table。
CREATE TABLE REFTT OF TYP_REFT
如果您创建 TYPE_REFT 的 REFTT table,那么您的代码将如您所说的那样工作。您可以在 REFTAB 中存储其他信息。
CREATE TABLE REFTAB
(ID REF TYP_REFT,
MOREINFO VARCHAR2(20));
INSERT INTO REFTAB
SELECT REF(T), 'BIGTIME'
FROM REFTT T;