Oracle 11G Varray of Offics
سؤال
لدي العبارات التالية في أوراكل 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
شكرًا
المحلول
أنا متأكد جدا من أن:
ما تفعله ليس ما سأفعله. إنه نوع من المبادئ العلائقية تمامًا ، وسوف ينتهي بك الأمر بنظام كائن/نوع في Oracle قد لا تتمكن من التغيير بمجرد وضعه. أفضل استخدام رأيته لأنواع SQL (وليس أنواع PL/SQL) هو في الأساس أن يكون قادرًا على إلقاء مؤشر المرجع للوظائف التي يتم تحديدها.
عليك أن لا تكون مجموعة المجموعة قبل أن تتمكن من الاستعلام عنها بشكل علاق ، مثل ذلك:
حدد الاسم من (SELECT SP.* من People P ، Table (p.some_people) sp)
سيعطيك ذلك جميع الصفوف ، لأنه لا يوجد شيء في مواصفاتك (مثل سمة الشخص) لتقييد الصفوف.
دليل Oracle Application Developer - الميزات العلائقية للكائن يناقش كل هذا بعمق أكبر بكثير ، مع أمثلة.
نصائح أخرى
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')
)
لا تنتمي إلى StackOverflow