Oracle, объектная таблица и вложенные таблицы - PullRequest
0 голосов
/ 23 января 2012

скажем, у меня есть 2 объекта MY_OBJ, MY_NESTED_TABLE_OBJ

CREATE OR REPLACE TYPE MY_NESTED_TABLE_OBJ IS TABLE OF VARCHAR2(100);

CREATE OR REPLACE TYPE MY_OBJ AS OBJECT (
    simple_atribute NUMBER(6),
    table_attribute MY_NESTED_TABLE_OBJ,
    MEMBER PROCEDURE doStuff(text VARCHAR2)
) NOT FINAL INSTANTIABLE;

Таблица MY_OBJ

CREATE TABLE TBL_MY_OBJ OF MY_OBJ
(  CONSTRAINT PK_simple_atribute PRIMARY KEY(simple_atribute))
NESTED TABLE table_attribute STORE AS attribute_nst;

Как мне вставить VARCHAR2 (100) во вложенную таблицу, принадлежащую table_attribute ?? Что такое синтаксис ??

Выполнение простой вставки, например: INSERT INTO attribute_nst VALUES ('some text'); выдает ошибку

не может ссылаться на таблицу хранения столбца вложенной таблицы

Я хочу сделать вставку из в PROCEDURE doStuff (текст VARCHAR2) , я пробовал:

INSERT INTO SELF.attribute_nst VALUES (text);
INSERT INTO attribute_nst VALUES (text);
INSERT INTO table_attribute VALUES (text);

... и другие комбинации и нет ничего, поэтому, пожалуйста, помогите!

Ответы [ 2 ]

3 голосов
/ 23 января 2012
SQL> CREATE OR REPLACE TYPE BODY MY_OBJ AS
  2    member procedure doStuff(text varchar2) is
  3    begin
  4      table_attribute.extend(1);
  5      table_attribute(table_attribute.count) := text;
  6    end;
  7  end;
  8  /

Type body created.

SQL> declare
  2     l_my_obj My_Obj := My_Obj(1,MY_NESTED_TABLE_OBJ());
  3  begin
  4    l_my_obj.doStuff('abc');
  5    l_my_obj.doStuff('def');
  6
  7    insert into tbl_my_obj values (l_my_obj);
  8  end;
  9  /

PL/SQL procedure successfully completed.

SQL> select * from tbl_my_obj;

SIMPLE_ATRIBUTE
---------------
TABLE_ATTRIBUTE
------------------------------------------------------------
              1
MY_NESTED_TABLE_OBJ('abc', 'def')
0 голосов
/ 23 января 2012

Попробуйте это
вставить в значения tbl_my_obj (1, новый my_nested_table_obj (text1, text2));

...