Турни олдиндан аниқлаш
Сиз фақат мавжуд бўлган схема объектига ҳавола этишингиз мумкин. Қуйидаги мисолда биринчи CREATE TYPE жумласи ўринсиз бўлади , чунки у ҳали мавжуд бўлмаган Department, турдаги объектга ҳавола этаяпти:
CREATE TYPE Employee AS OBJECT (
name VARCHAR2(20),
dept REF Department, -- нотўғри
...
);
CREATE TYPE Department AS OBJECT (
number INTEGER,
manager Employee,
...
);
CREATE TYPE жумлалари ўрнини алмаштириб муаммони ҳал этиб бўлмайди, чунки бу турлар бир-бирига мурожаат қилаяпти. Ушбу муаммони ҳал этиш учун, махсус турни олдиндан аниқлаш деб номланувчи CREATE TYPE жумласини ишлатиш лозим:
CREATE TYPE Department; --турни олдиндан аниқлаш /*бу ерда Department–тугатилмаган объект тури*/
Тури олдиндан аниқланган объект тури тугатилмаган объект тури (то у тўлиқ аниқлангунча)деб номланади, чунки у ҳали атрибутлар ва методларга эга эмас.
Объектларни бошқариш
Объект турини CREATE TABLE жумласида устуннинг берилганлари турини аниқлашда ишлатишингиз мумкин. Жадвални бир марта аниқлаб, SQL жумлаларини объектни киритиш, унинг атрибутларини сўров қилиш, унинг методларини чақириш ва унинг ҳолатини ўзгартириш учун ишлатиш мумкин.
Қуйидаги SQL*Plus скриптида INSERT жумласи Rational объект тури учун конструкторни чақиради ва натижавий объектни жадвалга киритади. SELECT жумласи num атрибути қийматини сўров қилиб олади. UPDATE жумласи reciprocal member методини чакиради.
CREATE TABLE numbers (rn Rational, ...)
/
INSERT INTO numbers (rn) VALUES (Rational(3, 62)) -- 3/62
/
SELECT n.rn.num INTO my_num FROM numbers n ... – 3 қайтаради
/
UPDATE numbers n SET n.rn = n.rn.reciprocal ... -- 62/3 қайтаради
/
Агар сиз объектларни шу тарзда ташкил қилсангиз, улар жадвалдан ташқарида ўзининг идентификаторига эга бўлмайди. Аммо объект тури ихтиёрий жадвалга боғлиқ бўлмаган тарзда мавжуд бўлади ва уларни объектларни бошқа усулда ташкил қилишда ишлатиш мумкин.
Қуйидаги мисолда, қаторлари Rational турдаги объектлардан иборат жадвал ташкил қилинади. Объектли қаторлардан таркиб топган бундай жадваллар объектли жадваллар деб номланади. Қатордаги ҳар бир устун объект турининг атрибутига мос келади.
CREATE TABLE rational_nums OF Rational;
Объектли жадвалнинг ҳар бир қатори объектни бир қийматли равишда аниқлаб берувчи ва айнан шу қаторда сақланувчи объект идентификаторига эга бўлиб объектга ҳавола қилиш учун хизмат қилади.
Do'stlaringiz bilan baham: |