Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle对象关系-是否有方法声明子类型的嵌套表?_Sql_Oracle_Object Relational Model - Fatal编程技术网

Sql Oracle对象关系-是否有方法声明子类型的嵌套表?

Sql Oracle对象关系-是否有方法声明子类型的嵌套表?,sql,oracle,object-relational-model,Sql,Oracle,Object Relational Model,类型声明: 创建类型DIPENDENTE作为对象( NOME VARCHAR2(20), CF CHAR(16), 数据日期 )不是最终的; / 在DIPENDENTE_TY下创建类型AMMINISTRATORE_TY( ); / 在DIPENDENTE_TY下创建类型MEDICO_TY( 特别是瓦尔查2号(20), REPARTO VARCHAR2(20), 成员访问程序(PAZIENTE VARCHAR, DATAV日期, TIPOV VARCHAR2, 票证(整数) ); / 创建类型PA

类型声明:

创建类型DIPENDENTE作为对象(
NOME VARCHAR2(20),
CF CHAR(16),
数据日期
)不是最终的;
/
在DIPENDENTE_TY下创建类型AMMINISTRATORE_TY(
);
/
在DIPENDENTE_TY下创建类型MEDICO_TY(
特别是瓦尔查2号(20),
REPARTO VARCHAR2(20),
成员访问程序(PAZIENTE VARCHAR,
DATAV日期,
TIPOV VARCHAR2,
票证(整数)
);
/
创建类型PAZIENTE_TY作为对象(
CF CHAR(16),
NOME VARCHAR2(20),
COGNOME VARCHAR2(20)
);
/
将类型访问创建为对象(
数据日期,
TIPO VARCHAR2(20),
票证整数
);
/
创建类型COLL_REF_VISITA_TY作为REF VISITA_TY表;
/
更改类型MEDICO_TY添加属性VISITATO COLL_REF_VISITA_TY;
/
改变类型PAZIENTE_TY添加属性FA_VISITA COLL_REF_VISITA_TY;
/
改变类型访问添加属性DIP REF PAZIENTE TIY级联;
/
改变类型访问添加属性DIM-REF-MEDICO-TY级联;
/
创建PAZIENTE_TY的表PAZIENTE_选项卡
嵌套表FA_VISITA STORE作为VISITE_PAZIENTE_选项卡;
/
创建DIPENDENTE_TY的表DIPENDENTE_选项卡;
/
创建VISITA_TY的TABLE VISITA_选项卡;
--(
--倾角范围为PAZIENTE_TAB,
--DIM范围为DIPENDENTE_选项卡
--);
/
我需要声明Medico_ty的VISITATO嵌套表,但它是Dipendente_ty的子类型,因此我只有Dipendente_ty类型实例的表。如何仅为Medico_ty实例声明嵌套表

编辑 当我尝试为Dipendente_y定义表时,出现以下错误:

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

您不需要为子类型声明嵌套表(并且可以使用类型的前向声明来删除所有
ALTER
语句):

创建类型DIPENDENTE作为对象(
NOME VARCHAR2(20),
CF CHAR(16),
数据日期
)不是最终的;
在DIPENDENTE_TY()下创建类型AMMINISTRATORE_TY;
创建类型MEDICO_;
创建类型PAZIENTE_TY;
将类型访问创建为对象(
数据日期,
TIPO VARCHAR2(20),
票证整数,
倾斜参考PAZIENTE_TY,
尺寸参考医疗设备
);
创建类型COLL_REF_VISITA_TY作为REF VISITA_TY表;
在DIPENDENTE_TY下创建类型MEDICO_TY(
特别是瓦尔查2号(20),
REPARTO VARCHAR2(20),
参观学校参考资料,
成员访问程序(
帕齐恩特·瓦尔查尔,
DATAV日期,
TIPOV VARCHAR2,
票证整数
)
);
创建类型PAZIENTE_TY作为对象(
CF CHAR(16),
NOME VARCHAR2(20),
COGNOME VARCHAR2(20),
参观学校参考资料
);
创建DIPENDENTE_TY的表DIPENDENTE_选项卡;
创建PAZIENTE_TY的表PAZIENTE_选项卡
嵌套表FA_VISITA STORE作为VISITE_PAZIENTE_选项卡;
创建访问表的“访问”选项卡(
倾角范围为PAZIENTE_TAB,
DIM范围为DIPENDENTE_选项卡
);
更改表格访问页面选项卡
添加范围(列值)为VISITA_选项卡;
然后您可以创建数据:

插入visita_选项卡值(visita_TY(SYSDATE,'tipo1',1,NULL,NULL));
在visita_选项卡中插入值(visita_TY(SYSDATE,'tipo2',2,NULL,NULL));
在visita_选项卡中插入值(visita_TY(SYSDATE,'tipo3',3,NULL,NULL));
插入到DIPENDENTE_选项卡值中(
医务室(
“诺姆”,
“cf”,
系统日期,
“特价”,
“reparto”,
参考咨询室(
(从visita_选项卡v中选择参考(v),其中票证=1),
(从visita_选项卡v中选择参考(v),其中票证=2)
)
)
);
插入到visita_选项卡值中(
参观(
系统日期,
"tipo4",,
4.
无效的
(选择治疗(参考(m)作为参考医疗)
来自dipendente_tab m
其中nome='nome'
而价值(m)是(医学)
)
)
);
MEDICO_TY
值存储在
DIPENDENTE_选项卡
中,无需为子类型中定义的集合创建嵌套表

您可以使用以下方法获取数据:

选择数据,
提坡,
票,
v、 迪姆·诺姆,
v、 dim.cf,
v、 迪姆·达坦,
v、 dim.specialita,
v、 迪姆·雷帕托,
dv.column_value.tipo
从visita_选项卡v
外部应用v.dim.VISITATO dv;

DBFIDLE

请详细描述您到底想要什么。由于“Medico_ty是Dipendente_ty的一个子类型”,因此当您更改
Medico_ty
@SayanMalakshinov
Medico_ty
时,您不会影响
Dipendente_ty
的VISITATO属性,它是
REF VISITA_ty
类型的一个表。我没有找到为
Medico\u ty
的这个属性声明嵌套表的方法,因为类型
Dipendente\u ty
没有这样的属性,当我试图为
Dipendente\u ty
定义表时,我得到了以下错误:(我在文章的编辑部分写的)是否需要为其声明嵌套表?从这一点来看,您似乎不需要这样做。(另外,您可以使用转发声明来消除对
ALTER
语句的需要。)@MT0非常感谢,示例非常清楚,我在寻找什么