У меня проблема с моей домашней работой. У меня есть следующие определения типа:Oracle sqlplus - определение типизированной таблицы без атрибутов, но вложенных таблиц
-- 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 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
Если вам нужна любая другая информация, чтобы помочь мне, пожалуйста, спросите, и я буду обновлять этот вопрос.
Спасибо!
Ваш пример работал для меня после того, как я добавил реальный столбец 'tourist_t'. Вы уверены, что все типы созданы успешно? Некоторые IDE, такие как PL/SQL Developer, будут выполнять инструкцию 'create type', но не предупреждают вас об исключениях. –
@jonearles: Да, я уверен, что они созданы успешно. Я не использую IDE, но загружаю скрипты в CLI sqlplus с обозначением '@ script.sql'. До сих пор я думаю, что это могут быть некоторые остатки старых трасс, и, возможно, я не работаю над чистой средой, но я не знаком с администрацией оракула. Есть ли способ очистить сеанс и начать снова с чистой среды? – Throoze
Поскольку ваши сценарии не имеют имен схем, вы должны иметь возможность запускать их как любой пользователь в любой базе данных. Для начала вы можете запустить скрипт следующим образом: 'drop table guide; drop type guide_t; drop type tourist_t; тип падения phone_table_t; drop type languages_table_t; '. С вашим кодом 'tourist_t' должен терпеть неудачу с' PLS-00589: никаких атрибутов, найденных в типе объекта «TOURIST_T» '. –