Oracle sqlplus-定义类型化表,没有属性,只有嵌套表
我的作业有问题。我有以下类型定义:Oracle sqlplus-定义类型化表,没有属性,只有嵌套表,sql,oracle,sqlplus,object-relational-model,Sql,Oracle,Sqlplus,Object Relational Model,我的作业有问题。我有以下类型定义: -- Type definitions CREATE OR REPLACE TYPE languages_table_t AS TABLE of VARCHAR2(20); / CREATE OR REPLACE TYPE phones_table_t AS TABLE of NUMBER; / CREATE OR REPLACE TYPE tourist_t AS OBJECT ( -- ... -- some simple attrubutes
-- Type definitions
CREATE OR REPLACE TYPE languages_table_t AS TABLE of VARCHAR2(20);
/
CREATE OR REPLACE TYPE phones_table_t AS TABLE of NUMBER;
/
CREATE OR REPLACE TYPE tourist_t AS OBJECT (
-- ...
-- some simple attrubutes
-- one attribute of user defined type
-- more simple attrubutes
-- ...
) NOT FINAL;
/
CREATE OR REPLACE TYPE guide_t UNDER tourist_t (
languages languages_table_t,
phones phones_table_t
);
/
-- All types are created successfully
-- table definitions:
CREATE TABLE Tourist OF tourist_t (
-- all simple attributes with nullity constraints
CONSTRAINT PK_TOURIST PRIMARY KEY (username),
) NESTED TABLE the_UDT_attr STORE AS the_user_defined_type;
-- Created successfully
CREATE TABLE Guide OF guide_t (
CONSTRAINT PK_GUIDE PRIMARY KEY (username)
) NESTED TABLE languages STORE AS guide_languages
NESTED TABLE phones STORE AS guide_phones;
-- returns mystic error
运行上一条create指令时,出现以下错误:
CREATE TABLE Guide OF guide_t (
*
ERROR at line 1:
ORA-22913: must specify table name for nested table column or attribute
我已经搜索了这个错误,但它似乎对我的定义太具体了,我找不到如何解决它。请,任何帮助都将不胜感激。我需要一个关于如何攻击此类错误、如何解决这些错误或在何处阅读这些错误的想法
sqlplus的版本为:
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
如果您需要任何其他信息来帮助我,请询问,我会更新问题
谢谢 还需要为超类型的属性定义嵌套表存储。当我将udt_tables.sql脚本添加到第155行时,它会工作:
CREATE TABLE Guia OF guia_t (
CONSTRAINT PK_GUIA PRIMARY KEY (username)
) NESTED TABLE idiomas STORE AS guia_idiomas
NESTED TABLE telefonos STORE AS guia_telefonos
NESTED TABLE tipoHitosPreferidos STORE as something;
在我向
tourism\u t
添加了一个真实的列之后,您的示例对我很有用。您确定所有类型都已成功创建吗?某些IDE,如PL/SQL Developer,将执行create type
语句,但不会警告您异常情况。@jonearles:是的,我确信它们已成功创建。我不是在使用IDE,而是在sqlplus CLI中加载带有符号@script.sql
的脚本。到目前为止,我认为这可能是旧运行的一些残余,也许我没有在一个干净的环境中工作,但我不熟悉oracle管理。有没有办法清理会话并在干净的环境中重新启动?因为脚本没有架构名称,所以您应该能够在任何数据库上以任何用户的身份运行它们。要重新开始,可以运行如下脚本:droptableguide;跌落式导轨;落地式旅游车;下拉式电话\u表\u t;下拉式语言\u表\u t代码>。使用您的代码,tourism\u t
应该会失败,因为PLS-00589:在对象类型“tourism\u t”中找不到属性。
@jonearles:另外,在我的脚本中,tourism\u t
有许多列。没有的是表指南
,它只有嵌套的表属性。你可以看到真正的脚本(西班牙语)谢谢!我的实验室合作伙伴刚刚弄明白了,我正在寻找问题来更新它。谢谢你花时间来帮助我们!