【发布时间】:2021-07-16 13:19:39
【问题描述】:
类型声明:
CREATE TYPE DIPENDENTE_TY AS OBJECT(
NOME VARCHAR2(20),
CF CHAR(16),
DATAN DATE
) NOT FINAL;
/
CREATE TYPE AMMINISTRATORE_TY UNDER DIPENDENTE_TY(
);
/
CREATE TYPE MEDICO_TY UNDER DIPENDENTE_TY(
SPECIALITA VARCHAR2(20),
REPARTO VARCHAR2(20),
MEMBER PROCEDURE INSERISCI_VISITA(PAZIENTE VARCHAR,
DATAV DATE,
TIPOV VARCHAR2,
TICKET INTEGER)
);
/
CREATE TYPE PAZIENTE_TY AS OBJECT(
CF CHAR(16),
NOME VARCHAR2(20),
COGNOME VARCHAR2(20)
);
/
CREATE TYPE VISITA_TY AS OBJECT(
DATA DATE,
TIPO VARCHAR2(20),
TICKET INTEGER
);
/
CREATE TYPE COLL_REF_VISITA_TY AS TABLE OF REF VISITA_TY;
/
ALTER TYPE MEDICO_TY ADD ATTRIBUTE VISITATO COLL_REF_VISITA_TY;
/
ALTER TYPE PAZIENTE_TY ADD ATTRIBUTE FA_VISITA COLL_REF_VISITA_TY;
/
ALTER TYPE VISITA_TY ADD ATTRIBUTE DIP REF PAZIENTE_TY CASCADE;
/
ALTER TYPE VISITA_TY ADD ATTRIBUTE DIM REF MEDICO_TY CASCADE;
/
CREATE TABLE PAZIENTE_TAB OF PAZIENTE_TY
NESTED TABLE FA_VISITA STORE AS VISITE_PAZIENTE_TAB;
/
CREATE TABLE DIPENDENTE_TAB OF DIPENDENTE_TY;
/
CREATE TABLE VISITA_TAB OF VISITA_TY;
--(
--DIP SCOPE IS PAZIENTE_TAB,
--DIM SCOPE IS DIPENDENTE_TAB
--);
/
我需要声明 Medico_ty 的 VISITATO 嵌套表,但它是 Dipendente_ty 的子类型,因此我只有 Dipendente_ty 类型的实例的表。如何仅为 Medico_ty 实例声明嵌套表?
编辑 当我尝试为 Dipendente_ty 定义表时出现以下错误:
ORA-02320: failure in creating storage table for nested table column TREAT(SYS_NC_ROWINFO$ AS "SQL_PFOHOKUIIIAMJALHSUZHUBDGJ"."MEDICO_TY")."VISITATO" ORA-06512: at "SYS.DBCLOUD_SYS_SEC", line 1404
ORA-06512: at "SYS.DBCLOUD_SYS_SEC", line 2224
ORA-06512: at line 2
【问题讨论】:
-
请详细描述您到底想要什么。由于“Medico_ty 是 Dipendente_ty 的子类型”,因此您更改
Medico_ty时不会影响Dipendente_ty -
@SayanMalakshinov
Medico_ty具有类型为COLL_REF_VISITA_TY的VISITATO 属性,它是REF VISITA_TY的表。我还没有找到为Medico_ty的这个属性声明嵌套表的方法,因为Dipendente_ty类型没有这样的属性,当我尝试为Dipendente_ty定义表时出现以下错误:(我在帖子的编辑部分写的) -
是否需要为它声明一个嵌套表?从这个db<>fiddle看来,您不需要这样做。 (此外,您可以使用前向声明来消除对
ALTER语句的需要。) -
@MT0 非常感谢,例子很清楚,我在找什么
标签: sql oracle object-relational-model