Oracle 11g VARRAY ОБЪЕКТОВ - PullRequest
       14

Oracle 11g VARRAY ОБЪЕКТОВ

0 голосов
/ 15 февраля 2010

У меня есть следующие утверждения в Oracle 11g:

CREATE TYPE person AS OBJECT (
    name VARCHAR2(10),
    age NUMBER
);

CREATE TYPE person_varray AS VARRAY(5) OF person;

CREATE TABLE people (
    somePeople person_varray
)

Как выбрать значение имени для человека, т. Е.

SELECT somePeople(person(name)) FROM people

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 февраля 2010

Я уверен, что:

  1. То, что вы делаете, не то, что я буду делать. Это как бы полностью нарушает реляционные принципы, и в итоге вы получите систему объектов / типов в Oracle, которую вы, возможно, не сможете изменить после ее установки. Лучшее использование, которое я видел для типов TYPE SQL (не для типов PL / SQL), - это возможность вернуть курсор ref для конвейерных функций.

  2. Вы должны удалить коллекцию, прежде чем вы сможете запросить ее реляционно, например:

    ВЫБРАТЬ ИМЯ ИЗ (ВЫБЕРИТЕ SP. * FROM PEOPLE P, TABLE (P.SOME_PEOPLE) SP)

Это даст вам все строки, потому что в ваших спецификациях нет ничего (например, атрибута PERSON_ID) для ограничения строк.

Руководство разработчика приложений Oracle - Object Relational Features обсуждает все это гораздо глубже, с примерами.

0 голосов
/ 06 июня 2016
To insert query:-

insert into people values (
person_varray(person('Ram','24'))
);

To select :-

select * from people;

SELECT NAME FROM (SELECT SP.* FROM PEOPLE P, TABLE(P.somePeople) SP)

While inserting a row into people table use constructor of 
person_varray and then the constructor 
of person type for each project.
The above INSERT command 
creates a single row in people table.

 select somePeople from people ;

 person(NAME, age) 
---------------------------------------------------
person_varray(person('Ram', 1), 

To update the  query will be:-

update people 
set somePeople =  
           person_varray 
           (  
               person('SaAM','23')  
           ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...