Объектларни эълон қилиш ва қиймат бериш
Объект турини бир марта эълон қилиб , сўнг уни ушбу турдаги объектларни ихтиёрий PL/SQL блокида, қисмдастурда ва пакетда эълон қилишда ишлатишингиз мумкин.
Объектларни эълон қилиш
Сиз объект турини CHAR ёки NUMBER каби ички қурилган турлари ишлатиладиган ихтиёрий жойда ишлатишингиз мумкин:
DECLARE
r Rational;
BEGIN
r := Rational(6, 8);
DBMS_OUTPUT.PUT_LINE(r.num); -- 6 чоп этади
Объектларни функция ёки процедура формал параметрлари сифатида эълон қилишингиз мумкин:
DECLARE
...
PROCEDURE open_acct (new_acct IN OUT Account) IS ...
Қуйидаги мисолда Account объект тури функция қайтарилиши лозим бўлган қиймат турини аниқлайди:
DECLARE
...
FUNCTION get_acct (acct_id IN INTEGER) RETURN Account IS ...
Объектларга қиймат бериш
Объектга унинг тури конструкторини чақириш йўли билан қиймат бермагунга қадар у ягона бирлик сифатида бўш бўлади. Яъни нафақат объект атрибутлари , балки унинг ўзи ҳам бўш бўлади:
DECLARE
r Rational; -- r ягона бирлик сифатида бўш
BEGIN
r := Rational(2,3); -- r 2/3 тенг
Бўш объект ҳеч қачон бошқа объектга тенг бўлмайди. Амалда бўш объектни ихтиёрий бошқа объект билан солиштириш натижаси NULL қиймат қайтаради. Худди шунингдек ягона бирлик сифатида бўш объектни бошқа объектга қиймат сифатида берганда, бошқа объект ягона бирлик сифатида бўш объект бўлади:
DECLARE
r Rational;
BEGIN
r Rational := Rational(1,2); --r ½ бўлади
r := NULL; -- r ягона бирлик сифатида бўш бўлади
IF r IS NULL THEN ... -- шарт TRUE қайтаради
Дастурлашнинг яхши усули объектни эълон қилишда унга қиймат беришдан иборат:
DECLARE
r Rational := Rational(2,3); -- r 2/3 бўлади
PL/SQL бўш объектни қандай текширади
Ифодаларда бўш объектнинг атрибутлари NULL деб олинади. Бўш объектнинг атрибутларига қиймат беришга уринсангиз, олдиндан аниқланган ACCESS_INTO_NULL мустасно содир бўлади. Агар бўш объект ёки унинг атрибутларига IS NULL солишитириш амалани қўлласангиз натижа TRUE бўлади.
Қуйидаги мисол бўш объект ва бўш атрибутли объект фарқини намойиш этади:
DECLARE
r Rational; -- r ягона бирлик сифатида бўш
BEGIN
IF r IS NULL THEN ... – TRUE бўлади
IF r.num IS NULL THEN ... – TRUE бўлади
r := Rational(NULL, NULL);-- r бўш атрибутли объект
r.num := 4; -- r ягона бирлик сифатида бўш эмас
r := NULL; -- r яна бўш бўлди
r.num := 4; -- ACCESS_INTO_NULL содир бўлади
EXCEPTION
WHEN ACCESS_INTO_NULL THEN
...
END;
Бўш объект методларини чақириш мумкин, унда SELF параметри NULL билан чегараланган бўлади. Агар IN турдаги параметрга бўш объект атрибутини аргумент сифатида узатсангиз NULL ҳосил бўлади.
Do'stlaringiz bilan baham: |