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


Хавола осилишини текшириш



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

Хавола осилишини текшириш


Агарда ref кўрсатиб турган объект йўқотилса ref осилган ҳолатда (мавжуд бўлмаган объектни кўрсатиб) қолади. Ушбу шартни текшириш учун IS DANGLING SQL предикатидан фойдаланишингиз мумкин:
BEGIN
UPDATE department SET manager = NULL WHERE manager IS DANGLING;

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


Refs кўрсатаётган объект қийматларини ўқиб олиш учун DEREF операторидан фойдаланишингиз мумкин. in a SQL statement. (DEREF is short for dereference. When you dereference a pointer, you get the value to which it points.) DEREF аргумент сифатида объектга ҳаволани қабул қилиб, сўнг ҳавола этилаётган объект қийматини қайтаради.
DECLARE
p1 Person;
p_ref REF Person;
name VARCHAR2(15);
BEGIN
...
/* Фараз қиламиз p_ref объектли жадвалда сақланаётган объектга ҳаволасини сақлайди*/
SELECT DEREF(p_ref) INTO p1 FROM dual;
name := p1.last_name;

CREATE TYPE PersonRef AS OBJECT (p_ref REF Person)


/
DECLARE
name VARCHAR2(15);
pr_ref REF PersonRef;
pr PersonRef;
p Person;
BEGIN
...
/* Фараз қиламиз pr_ref тўғри ҳаволадан тиркиб топган. */
SELECT DEREF(pr_ref) INTO pr FROM dual;
SELECT DEREF(pr.p_ref) INTO p FROM dual;
name := p.last_name;
...
END
/
Қуйидаги мисол DEREF операторини процедуравий жумлаларда ишлатиш мумкин эмаслигини кўрсатади:
BEGIN
...
p1 := DEREF(p_ref); -- нотўғри

Қуйидаги синтаксис ёзувлар тўғри:


table_alias.object_column.ref_attribute
table_alias.object_column.ref_attribute.attribute
table_alias.ref_column.attribute

Фараз қиламиз Address ва Person, ҳамда persons объектли жадвални ташкил этувчи қуйидаги SQL*Plus скрипти бажарилди.


CREATE TYPE Address AS OBJECT (
street VARCHAR2(35),
city VARCHAR2(15),
state CHAR(2),
zip_code INTEGER)
/
CREATE TYPE Person AS OBJECT (
first_name VARCHAR2(15),
last_name VARCHAR2(15),
birthday DATE,
home_address REF Address, -- бошқа Person объектлари ҳам ишлатади
phone_number VARCHAR2(15))
/
CREATE TABLE persons OF Person
/

Ref турдаги home_address атрибути persons объектли жадвалнинг устунига мос келиб, у бошқа жадвалда сақланаётган Address объектларига ҳаволадан таркиб топган. Жадвални тўлдирганингиздан кейин, сиз қуйида кўрсатилганидек хусусий адресларни сўров қилиб олишингиз мумкин:


DECLARE
addr1 Address,
addr2 Address,
...
BEGIN
SELECT DEREF(home_address) INTO addr1 FROM persons p
WHERE p.last_name = 'Derringer';

Қуйидаги мисолда home_address ref устун орқали street атрибутига мурожаат қилинади. Бу ҳолатда жадвал ҳамроҳи талаб қилинади.


DECLARE
my_street VARCHAR2(25),
...
BEGIN
SELECT p.home_address.street INTO my_street FROM persons p
WHERE p.last_name = 'Lucas';

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