CHÖÔNG 1CHÖÔNG ORACLE OBJECT TYPE 1. Kieåu ñoái töôïng (Object type) laø gì? So vôùi caùc kieåu döõ lieäu khaùc kieåu ñoái töôïng coù gì ñaëc bieät? 2. Haõy taïo ñoái töôïng laø moät ñôn ñaët haøng PO (Purchase Order) vôùi caùc thuoäc tính sau: item_id NUMBER line_no NUMBER (3) part_no VARCHAR2 (20) price NUMBER (15,5) qty NUMBER (9,2) received NUMBER (9,2)
Xaây döïng caùc phöông thöùc cho bieát soá löôïng haøng caàn ñaët, soá löôïng haøng ñaõ nhaän … 3. Taïo moät baûng (table) löu ñoái töôïng PO (ñôn ñaët haøng) theo coät. 4. Taïo moät baûng (table) löu ñoái töôïng PO (ñôn ñaët haøng) theo doøng. 5. Thöïc hieän leänh INSERT cheøn caùc PO môùi vaøo baûng, SELECT xuaát caùc PO ñaõ nhaäp ra maøn hình, UPDATE caäp nhaät thoâng tin veà PO, DELETE xoùa caùc PO cuõ … 6. So saùnh hai ñoái töôïng ñöôïc thöïc hieän nhö theá naøo? Phaân bieät phöông thöùc aùnh xaï (map method) vaø phöông thöùc phaân ngoâi (order method). 7. Tham chieáu vaø keát noái giöõa caùc ñoái töôïng töø hai baûng khaùc nhau ñöôïc thöïc hieän nhö theá naøo, cho ví duï. 8. Coù theå raøng buoäc moät thuoäc tính cuûa moät ñoái töôïng baèng caùc töø khoùa NOT NULL, CHECK hoaëc PRIMARY KEY hay khoâng?
1.1.ÑAÙP AÙN 1. Khoâng nhö caùc kieåu döõ lieäu khaùc, kieåu döõ lieäu Object laø moät kieåu döõ lieäu phöùc hôïp noù coù theå ñoùng goùi nhöõng kieåu döõ lieäu khaùc (ñöôïc bieåu dieãn döôùi daïng thuoäc tính) vaø caû nhöõng phöông thöùc ñeå xöû lyù döõ lieäu maø ñoái töôïng ñoùng goùi. Baïn coù theå taïo ra moät kieåu ñoái töôïng vaø chæ ñònh aùp duïng kieåu ñoái töôïng cho moät coät cuûa baûng hoaëc toaøn boä baûng. Vieäc truy xuaát caùc ñoái töôïng löu trong baûng cuõng thoâng qua caùc leänh SQL thoâng thöôøng. Söû duïng kieåu ñoái töôïng baïn seõ moâ taû döõ lieäu gaàn vôùi theá giôùi thöïc hôn. 2. Kieåu ñoái töôïng PO coù theå ñöôïc taïo ra nhö sau: /* Phaàn ñaëc taû */ CREATE TYPE po AS OBJECT( item_id NUMBER, line_no NUMBER (3), part_no VARCHAR2 (20), price NUMBER (15,5), qty NUMBER (9,2), received NUMBER (9,2),
-- Phöông thöùc duøng ñeå laáy veà löôïng haøng chöa nhaän MEMBER FUNCTION Backlog RETURN NUMBER,
-- Phöông thöùc duøng ñeå laáy veà soá tieàn cuûa PO MEMBER FUNCTION GetAmount NUMBER RETURN NUMBER
);
/* phaàn thaân cuûa ñoái töôïng */ CREATE TYPE BODY po AS
MEMBER FUNCTION Backlog RETURN NUMBER
IS
BEGIN RETURN (qty-received) END Backlog;
MEMBER FUNCTION GetAmount RETURN NUMBER IS
BEGIN RETURN (qty*price) END GetAmount;
END;
3. Taïo moät baûng (table) löu ñoái töôïng PO theo coät: CREATE TABLE ALLPO(d DATE,SaleOrder PO); Baûng ALLPO seõ ñöôïc taïo ra vôùi noäi dung nhö sau: SQL> DESC ALLPO … 4. Taïo moät baûng (table) löu ñoái töôïng PO theo doøng: CREATE TABLE ALLPO OF PO; Baûng ALLPO seõ ñöôïc taïo ra vôùi noäi dung nhö sau: SQL> DESC ALLPO … 5. Cheøn PO (ñôn ñaët haøng) môùi vaøo baûng ALLPO 6. Xem lyù thuyeát. 7,8. Xem lyù thuyeát.