Основы (асослар)



Download 0,95 Mb.
bet54/58
Sana10.07.2022
Hajmi0,95 Mb.
#771988
1   ...   50   51   52   53   54   55   56   57   58
Bog'liq
PL-SQL Маъруза матни (2)

Объектларга сўров бериш


Фараз қиламиз Person объект тури ва persons объектли жадвални ташкил қилувчи қуйидаги SQL*Plus скриптини бажаришга юбордингиз ва ушбу жадвални тўлидириш ниятидасиз:
CREATE TYPE Person AS OBJECT (
first_name VARCHAR2(15),
last_name VARCHAR2(15),
birthday DATE,
home_address Address,
phone_number VARCHAR2(15))
/
CREATE TABLE persons OF Person
/

Қуйидаги сўровости фақат Person объектлари атрибутларидан таркиб топган натижавий қаторлар тўпламини ишлаб чиқади:


BEGIN
INSERT INTO employees -- Person туридаги бошқа объектли жадвал
SELECT * FROM persons p WHERE p.last_name LIKE '%Smith';

Натижавий объектлар тўпламини қайтариш учун VALUE операторидан фойдаланишингиз лозим.


VALUE операторидан фойдаланиш


VALUE оператори объект қийматини қайтаради. VALUE оператори аргумент сифатида корелляцион ўзгарувчини қабул қилади. Биз бу ерда корелляцион ўзгарувчи деганда, қаторли ўзгарувчини ёки объектли жадвалнинг қатори билан боғлиқ бўлган жадвал ҳамроҳини тушунамиз. Масалан Person туридаги натижавий объектлар тўпламини қайтариш учун VALUE операторидан қуйидагича фойдаланинг:
BEGIN
INSERT INTO employees
SELECT VALUE(p) FROM persons p
WHERE p.last_name LIKE '%Smith';

Қуйидаги мисолда Person туридаги махсус объектни қайтариш учун VALUE операторидан фойдаланган:


DECLARE
p1 Person;
p2 Person;
...
BEGIN
SELECT VALUE(p) INTO p1 FROM persons p
WHERE p.last_name = 'Kroll';
p2 := p1;
...
END;

Бу ерда p1 локал Person объектидан таркиб топган бўлиб, охирги номи 'Kroll' бўлган сақланадиган объект нусхасидир ва p2 бошқа локал Person объекти бўлиб p1 объект нусхасидир:


BEGIN
p1.last_name := p1.last_name || 'Jr';

Энди p1 локал Person объектидаги охирги ном 'Kroll Jr' иборат.


REF операторидан фойдаланиш


Refs-ни REF операторидан фойдаланиб очишингиз мумкин, бунда у аргумент сифатида корреляцион ўзгарувчини қабул қилади. Қуйидаги мисол ёрдамида сиз Person объектлари учун битта ёки ундан кўп refs очиб, сўнг уларни person_refs жадвалига ёзиб қўйишингиз мумкин:
BEGIN
INSERT INTO person_refs
SELECT REF(p) FROM persons p
WHERE p.last_name LIKE '%Smith';

Қуйидаги мисолда сиз ref ва атрибутни бир вақтнинг ўзида очишингиз мумкин:


DECLARE
p_ref REF Person;
taxpayer_id VARCHAR2(9);
BEGIN
SELECT REF(p), p.ss_number INTO p_ref, taxpayer_id
FROM persons p
WHERE p.last_name = 'Parker'; -- битта қитор қайтариши лозим
...
END;

Охирги мисолда сиз Person объекти қийматини ўзгартирасиз:


DECLARE
p_ref REF Person;
my_last_name VARCHAR2(15);
...
BEGIN
...
SELECT REF(p) INTO p_ref FROM persons p
WHERE p.last_name = my_last_name;
UPDATE persons p
SET p = Person('Jill', 'Anders', '11-NOV-67', ...)
WHERE REF(p) = p_ref;
END;

Download 0,95 Mb.

Do'stlaringiz bilan baham:
1   ...   50   51   52   53   54   55   56   57   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish