Основы (асослар)
Хавола осилишини текшириш
Download 0.95 Mb.
|
PL-SQL Маъруза матни
- Bu sahifa navigatsiya:
- DEREF операторидан фойдаланиш
Хавола осилишини текширишАгарда 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling