【发布时间】:2020-10-01 12:59:47
【问题描述】:
我正在处理 Oracle 中的嵌套表和 VArray(澄清一下,这是为了在大学学习)。我有这个TABLE结构,我把数据放进去就一切OK了。
CREATE OR REPLACE TYPE Addendum AS OBJECT (
idCode VARCHAR2(10),
signature_date TIMESTAMP,
--A VARRAY(5) OF REF STUDENT (STUDENT IF THE TYPE, TSTUDENT THE TABLE)
studentlist student_list,
--A TABLE OF REF STAFF (STAFF IS THE TYPE, TSTAFF THE TABLE)
staff_members tStaff,
pdi_manager REF PDI
) FINAL;
CREATE TABLE Addendums OF Addendum
NESTED TABLE staff_members STORE AS staffmembers_nt;
CREATE UNIQUE INDEX ADDENDUMS_IDCODE_UINDEX on ADDENDUMS (IDCODE);
CREATE OR REPLACE TYPE tAddendum AS TABLE OF Addendum;
在第一次尝试中,我执行了一个类似SELECT * FROM ADDENDUMS 的查询,它显示了这个东西:
0000000000,2019-09-01 00:00:00.000000,"{<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF}","{<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF}"
0000000001,2019-09-01 00:00:00.000000,"{<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF}","{<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF,<failed to load> oracle.sql.REF}"
我还尝试使用 DEREF 指令进行选择并明确引用列,其中:select ad.IDCODE, ad.SIGNATURE_DATE, DEREF(ad.STUDENTLIST), DEREF(ad.STAFF_MEMBERS), DEREF(ad.PDI_RESPONSABLE) from UOC.ADDENDUMS ad;,它仅显示正确取消引用的 PDI_MANAGER。
我可以用 VARRAY 和 NESTED TABLE 做什么?例如,SQL 的正确语法是什么(不是 this question 中的 PL/SQL)?
【问题讨论】:
标签: oracle oracle11g user-defined-types