Oracle PL/SQL objektumtípusok: CREATE TYPE példákkal

⚡ Okos összefoglaló

A PL/SQL objektumtípusai objektumorientált programozást tesznek lehetővé. Oracle, lehetővé téve a valós világbeli entitások modellezését attribútumok és metódusok segítségével. Támogatják a konstruktorokat, az öröklődést és az egyenlőség-összehasonlítást, így egyetlen séma szintű típus képes strukturált adatok tárolására és feldolgozására.

  • 🧱 Objektumtípus-összetevők: Egy objektumtípus az adatokat tároló attribútumokat és a feldolgozási logikáját meghatározó tagokat vagy metódusokat kombinálja.
  • 🏗️ Objektum létrehozása: Az objektumtípusok séma szinten jönnek létre a CREATE TYPE paranccsal, metódusaik pedig egy külön CREATE TYPE BODY-ban vannak definiálva.
  • 🔧 Kivitelezők: Minden objektumtípushoz tartozik egy implicit konstruktor, amely a típusról van elnevezve, és definiálhatsz egy explicit konstruktort az alapértelmezett értékek beállításához.
  • 🧬 Öröklés: Egy NOT FINAL szülőtípus kiegészül az UNDER függvénnyel, így egy altípus örökli az összes szülő attribútumot és tagot.
  • 🇧🇷 Egyenlőség: Egy ORDER tagfüggvény két objektumpéldányt hasonlít össze, és negatív, nulla vagy pozitív számot ad vissza.
  • 🤖 AI segítség: Az olyan mesterséges intelligencia asszisztensek, mint a GitHub Copilot, megjegyzésekből készítenek CREATE TYPE definíciókat, konstruktorokat és ORDER metódusokat.

Oracle PL/SQL objektumtípusok, amelyek a CREATE TYPE-ot mutatják attribútumokkal és metódusokkal

Mi az objektumtípus a PL/SQL-ben?

Az objektumorientált programozás különösen alkalmas újrafelhasználható komponensek és összetett alkalmazások fejlesztésére. A programok „objektumok”, nem pedig „műveletek” köré szerveződnek; vagyis úgy vannak kialakítva, hogy egy egész objektummal működjenek és interakcióba lépjenek, ne pedig egyetlen művelettel. Ez a megközelítés lehetővé teszi a programozó számára, hogy objektum-entitás szinten töltse ki és manipulálja a részleteket.

Az alábbi kép egy olyan objektumtípust mutat be, amelyben egy bankszámlát objektumentitásként kezelünk. Az objektumattribútumok értékeket tartalmaznak – bankszámla esetén ezek a számlaszám, a banki egyenleg stb. –, míg az objektummetódusok olyan műveleteket írnak le, mint a kamatláb kiszámítása vagy a bankszámlakivonat generálása, amelyek mindegyikéhez egy folyamat végrehajtása szükséges.

Bankszámla objektumtípusként modellezve, attribútumokkal és metódusokkal PL/SQL-ben

In PL / SQLAz objektumorientált programozás objektumtípusokon alapul. Egy objektumtípus bármilyen valós entitást reprezentálhat. Az alábbi szakaszok az objektumtípusokat, azok összetevőit, valamint létrehozásuk és használatuk módját tárgyalják.

Az objektumtípusok összetevői

Egy PL/SQL objektumtípus főként két komponensből áll.

  1. Attribútumok
  2. Tagok/Módszerek

Attribútumok

Az attribútumok azok az oszlopok vagy mezők, amelyekben az adatok tárolódnak. Minden attribútum ahhoz az adattípushoz van leképezve, amely meghatározza az adott attribútum feldolgozási és tárolási típusát. Egy attribútum bármilyen érvényes lehet. PL/SQL adattípus, vagy lehet más objektumtípus is.

Tagok/Módszerek

A tagok, vagy metódusok, alprogramok az objektumtípuson belül vannak definiálva. Nem adatok tárolására szolgálnak, ehelyett az objektumtípuson belül végrehajtott feldolgozást definiálják – például az adatok érvényesítését az objektum feltöltése előtt. Az objektumtípus-specifikációban deklarálják őket, és az objektumtípus törzsében definiálják őket. A törzs opcionális: ha nincsenek tagok, akkor az objektumtípusnak nincs törzse.

Objektum létrehozása Oracle

Objektumtípus nem hozható létre alprogram szinten; csak séma szinten hozható létre. Miután az objektumtípus definiálva van a sémában, használható alprogramokban. Az objektumtípus a „CREATE TYPE” utasítással hozható létre, és a típus törzse csak azután hozható létre, hogy az objektumtípusa létezik.

Az alábbi képernyőképek az objektumspecifikáció CREATE TYPE szintaxisát és a metódusait definiáló CREATE TYPE BODY szintaxist mutatják.

CREATE TYPE szintaxis, amely egy objektumspecifikációt definiál attribútumokkal Oracle CREATE TYPE BODY szintaxis, amely egy PL/SQL objektumtípus metódusait definiálja

CREATE TYPE<object_type_name> AS OBJECT
(
<attribute_l><datatype>,
.
.
);
/
CREATE TYPE BODY<object_type_name> AS OBJECT
(
MEMBER[PROCEDURE|FUNCTION]<member_name> 
IS
<declarative section>
BEGIN
<execution part>
END;
.
.
);
/

Szintaxis magyarázata:

  • A fenti szintaxis egy OBJECT objektum létrehozását mutatja be attribútumokkal és egy OBJECT BODY objektum létrehozását metódusokkal.
  • A metódusok az objektumtörzsben is túlterhelhetők.

Nyilatkozat Objektumtípus inicializálása

A PL/SQL más komponenseihez hasonlóan az objektumtípusokat is deklarálni kell, mielőtt egy programban használnánk őket. Miután az objektumtípus létrejött, felhasználható egy alprogram deklaratív szakaszában az adott objektumtípusú változó deklarálására.

Amikor egy változót objektumtípusként deklarálunk, futásidőben az objektumtípus egy új példánya jön létre, és erre az újonnan létrehozott példányra a változó nevével hivatkozunk. Ily módon egyetlen objektumtípus több értéket is tárolhat különböző példányok alatt.

Az alábbi képernyőkép egy változó objektumtípusként való deklarálását mutatja egy PL/SQL blokk.

Objektumtípusú változó deklarálása egy PL/SQL blokk deklaratív szakaszában

DECLARE
<variable_name> <object_type_name>;
BEGIN
.
.
END;
/

Szintaxis magyarázata:

  • A fenti szintaxis egy deklarációját mutatja be. változó objektumtípusként a deklaratív szakaszban.

Miután a változót objektumtípusként deklaráljuk egy alprogramban, az atomilag null – maga a teljes objektum null. Értékekkel kell inicializálni, mielőtt a programban használható lenne. Az objektumokat konstruktorok segítségével inicializáljuk.

A konstruktorok egy objektum implicit metódusai, amelyekre ugyanazzal a névvel lehet hivatkozni, mint az objektumtípusra. Az alábbi képernyőkép egy objektumtípus-példány inicializálását mutatja.

Objektumtípus-példány inicializálása null értékre a konstruktorának használatával

DECLARE
<variable_name> <object_type_name>; 
BEGIN
<variable_name>:=<object_type_name>();
END;
/

Szintaxis magyarázata:

  • A fenti szintaxis az objektumtípus-példány null értékkel történő inicializálását mutatja.
  • Maga az objektum már nem null értékű az inicializálás után, de az objektumon belüli attribútumok nullok maradnak, amíg értékeket nem rendelünk hozzájuk.

Kivitelezők

A konstruktorok egy objektum implicit metódusai, amelyekre ugyanazzal a névvel lehet hivatkozni, mint az objektumtípusra. Amikor az objektumra először hivatkozunk, ez a konstruktor implicit módon meghívódik.

Objektumokat is inicializálhatsz ezekkel a konstruktorokkal. Egy konstruktor explicit módon definiálható egy tag definiálásával az objektumtípus törzsében, amelynek neve megegyezik az objektumtípus nevével.

Példa 1: A következő példában az objektumtípusú tagot használjuk rekordok beszúrására az emp táblába a következő értékekkel: ('RRR', 1005, 20000, 1000) és ('PPP', 1006, 20000, 1001). Miután az adatokat beszúrtuk, az objektumtípusú tag segítségével jelenítjük meg azokat. Egy explicit konstruktort is használunk a kezelőazonosító feltöltéséhez az alapértelmezett 1001 értékkel a második rekordhoz.

A következő lépésekben hajtjuk végre.

  • 1. lépés: Hozza létre az Objektumtípust és az Objektumtípus törzsét.
  • 2. lépés: Hozz létre egy anonim blokkot az objektumtípus meghívásához az emp_no 1005 implicit konstruktorán keresztül.
  • 3. lépés: Hozz létre egy anonim blokkot az objektumtípus meghívásához az emp_no 1006 explicit konstruktorán keresztül.

1. lépés) Hozz létre objektumtípust és objektumtípus törzset.

Az alábbi képernyőkép az emp_object objektumtípus-specifikáció létrehozását mutatja be az attribútumaival és tagjaival együtt.

Az emp_object objektumtípus-specifikáció létrehozása attribútumokkal és tagokkal

CREATE TYPE emp_object AS OBJECT(
emp_no NUMBER,
emp_name VARCHAR2(50),
salary NUMBER,
manager NUMBER,
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER, p_emp_name VARCHAR2,
p_salary NUMBER) RETURN SELF AS RESULT),
MEMBER PROCEDURE insert_records,
MEMBER PROCEDURE display_records);
/

Az alábbi képernyőkép az emp_object típusú törzs létrehozását mutatja az explicit konstruktorral és a tageljárásokkal.

Az emp_object típus törzsének definiálása explicit konstruktorral és tageljárásokkal

CREATE OR REPLACE TYPE BODY emp_object AS
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER,p_emp_name VARCHAR2,
p_salary NUMBER)
RETURN SELF AS RESULT
IS
BEGIN
Dbms_output.put_line('Constructor fired..');
SELF.emp_no:=p_emp_no;
SELF.emp_name:=p_emp_name;
SELF.salary:=p_salary;
SELF.manager:=1001;
RETURN;
END;
MEMBER PROCEDURE insert_records
IS
BEGIN
INSERT INTO emp VALUES(emp_no,emp_name,salary,manager);
END;
MEMBER PROCEDURE display_records
IS
BEGIN
Dbms_output.put_line('Employee Name:'||emp_name);
Dbms_output.put_line('Employee Number:'||emp_no);
Dbms_output.put_line('Salary:'||salary);
Dbms_output.put_line('Manager:'||manager);
END;
END;
/

Code Magyarázat

  • Code 1-9. sor: Az „emp_object” objektumtípus létrehozása 4 attribútummal és 3 taggal. Ez egy konstruktor definícióját tartalmazza, amely mindössze 3 paraméterrel rendelkezik. (A tényleges implicit konstruktor annyi paramétert tartalmaz, ahány attribútum van az objektumtípusban.)
  • Code 10. sor: A típustörzs létrehozása.
  • Code 11-21. sor: Az explicit konstruktor definiálása. Paraméterértékek hozzárendelése az attribútumokhoz és a 'manager' attribútum alapértelmezett '1001' értékének hozzárendelése.
  • Code 22-26. sor: Az „insert_records” tag definiálása, amelyben az attribútumértékek beszúrásra kerülnek az „emp” táblába.
  • Code 27-34. sor: A 'display_records' tag definiálása, amely az objektumtípus attribútumok értékeit jeleníti meg.

output:

Típus létrehozva

Típus törzs létrehozva

Step 2) Névtelen blokk létrehozása a létrehozott objektumtípus meghívásához az emp_no 1005 implicit konstruktorán keresztül.

Az alábbi képernyőkép az anonim blokkot mutatja, amely az emp_object függvényt az implicit konstruktoron keresztül hívja meg.

Névtelen blokkhívás az emp_object függvényhez az emp_no 1005 implicit konstruktorán keresztül

DECLARE
guru_emp_det emp_object;
BEGIN
guru_emp_det:=emp_object(1005,'RRR',20000,1000);
guru_emp_det.display_records;
guru_emp_det.insert_records;
COMMIT;
END;

Code Magyarázat

  • Code 37-45. sor: Rekordok beszúrása implicit konstruktorral. A konstruktor hívása tartalmazza az attribútumértékek tényleges számát.
  • Code 38. sor: A 'guru_emp_det' objektumot 'emp_object' objektumtípusként deklarálja.
  • Code 41. sor: A „guru_emp_det.display_records” utasítás meghívja a „display_records” tagot, és megjeleníti az attribútumértékeket.
  • Code 42. sor: A „guru_emp_det.insert_records” utasítás meghívja az „insert_records” tagot, és az attribútumértékek beszúródnak a táblázatba. A blokk ezután véglegesíti a tranzakció.

output:

Alkalmazott neve: RRR

Alkalmazotti létszám: 1005

Fizetés: 20000 XNUMX

Menedzser: 1000

Step 3) Névtelen blokk létrehozása a létrehozott objektumtípus meghívásához az emp_no 1006 explicit konstruktorán keresztül.

Az alábbi képernyőkép egy anonim blokkot mutat, amely az emp_object függvényt hívja meg explicit konstruktoron keresztül, három argumentummal.

Névtelen blokkhívás az emp_object függvényhez az emp_no 1006 explicit konstruktorán keresztül

DECLARE
guru_emp_det emp_object;
BEGIN
guru_emp_det:=emp_object(1006,'PPP',20000);
guru_emp_det.display_records;
guru_emp_det.insert_records;
COMMIT;
END;
/

teljesítmény

Employee Name:PPP 
Employee Number:1006 
Salary:20000 
Manager:1001

Code Magyarázat:

  • Code 46-53. sor: A rekord beszúrása explicit konstruktor használatával.
  • Code 46. sor: A 'guru_emp_det' objektumot 'emp_object' objektumtípusként deklarálja.
  • Code 50. sor: A „guru_emp_det.display_records” utasítás meghívja a „display_records” tagot, és megjeleníti az attribútumértékeket.
  • Code 51. sor: A „guru_emp_det.insert_records” utasítás meghívja az „insert_records” tagot, és az attribútumértékek beszúródnak a táblázatba. Mivel csak három argumentumot adunk át, az explicit konstruktor a kezelő azonosítóját az alapértelmezett 1001-es értékre állítja be.

Öröklődés objektumtípusban

Az öröklés tulajdonság lehetővé teszi egy alobjektumtípus számára, hogy hozzáférjen a szuperobjektumtípus vagy a szülő objektumtípus összes attribútumához és tagjához.

Az alobjektumtípust örökölt objektumtípusnak, a szuperobjektumtípust pedig szülő objektumtípusnak nevezzük. Az alábbi szintaxis bemutatja, hogyan hozhatunk létre szülő és örökölt objektumtípusokat. Az alábbi képernyőkép a szülő (SUPER) típus szintaxisát mutatja be, amelyet NEM VÉGLEGES jelöléssel láttunk el.

CREATE TYPE szintaxis egy NOT FINAL szülő objektumtípushoz, amelyet az öröklés során használnak

CREATE TYPE <object_type_name_parent> AS OBJECT
(
<attribute_l><datatype>,
.
.
)NOT FINAL;
/

Szintaxis magyarázata:

  • A fenti szintaxis a SUPER típus létrehozását mutatja. A NOT FINAL záradék lehetővé teszi a típus öröklését.

Az alábbi képernyőkép az UNDER kulcsszóval létrehozott örökölt (SUB) típus szintaxist mutatja.

CREATE TYPE UNDER szintaxis egy szülőtől öröklődő alobjektumtípushoz

CREATE TYPE<object_type_name_sub>UNDER<object_type_name_parent>
(
<attribute_l><datatype>,
.
);
/

Szintaxis magyarázata:

  • A fenti szintaxis a SUB típus létrehozását mutatja be. Ez tartalmazza a szülő objektumtípus összes tagját és attribútumát.

Példa 1: Az alábbi példában az öröklés tulajdonságot használjuk egy '1002' kezelőazonosítójú rekord beszúrásához a következő rekordhoz: ('RRR', 1007, 20000). A programot a következő lépésekben hajtjuk végre.

  • 1. lépés: Hozza létre a SUPER típust.
  • 2. lépés: Hozza létre a SUB típust és törzset.
  • 3. lépés: Hozz létre egy névtelen blokkot a SUB típus meghívásához.

1. lépés) Hozz létre SUPER vagy Parent típust.

Az alábbi képernyőképen az emp_object szupertípus létrehozása látható a NOT FINAL záradékkal.

Az emp_object NOT FINAL szupertípus létrehozása az öröklési példához

CREATE TYPE emp_object AS OBJECT(
emp_no NUMBER,
emp_name VARCHAR2(50),
salary NUMBER,
manager NUMBER,
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER,p_emp_name VARCHAR2(50),
p_salary NUMBER)RETURN SELF AS RESULT),
MEMBER PROCEDURE insert_records,
MEMBER PROCEDURE display_records)NOT FINAL;
/

Code Magyarázat:

  • Code 1-9. sor: Az „emp_object” objektumtípus létrehozása 4 attribútummal és 3 taggal. Egy konstruktor definícióját tartalmazza, mindössze 3 paraméterrel. „NOT FINAL”-ként deklarálták, tehát szülő típus.

2. lépés) Hozz létre SUB típust a SUPER típus alatt.

Az alábbi képernyőkép a sub_emp_object örökölt típusát és annak létrehozását mutatja.

A sub_emp_object örökölt típus és törzsének létrehozása az insert_default_mgr paranccsal

CREATE OR REPLACE TYPE sub_emp_object 
UNDER emp_object
(default_manager NUMBER,MEMBER PROCEDURE insert_default_mgr);
/


CREATE OR REPLACE TYPE BODY sub_emp_object 
AS
MEMBER PROCEDURE insert_default_mgr 
IS
BEGIN
INSERT INTO emp
VALUES(emp_no,emp_name,salary,manager);
END;
END;
/

Code Magyarázat:

  • Code 10-13. sor: A 'sub_emp_object' létrehozása örökölt típusként egy további 'default_manager' attribútummal és egy tageljárás deklarációjával.
  • Code 14. sor: Az örökölt objektumtípus törzsének létrehozása.
  • Code 16-21. sor: A tageljárás definiálása, amely a SUPER objektumtípus értékeivel – a manager érték kivételével – beszúrja az 'emp' táblába a rekordokat. A manager értékéhez a SUB típus 'default_manager' értékét használja.

3. lépés) Névtelen blokk létrehozása a SUB típus meghívásához.

Az alábbi képernyőképen látható az anonim blokk, amely meghívja a SUB típust, és beszúrja az alapértelmezett kezelőazonosítót.

Névtelen blokk, amely a sub_emp_object típust hívja meg egy alapértelmezett kezelőazonosító beszúrásához.

DECLARE
guru_emp_det sub_emp_object;
BEGIN
guru_emp_det:= sub_emp_object(1007,'RRR',20000,1000,1002);
guru_emp_det.insert_default_mgr;
COMMIT;
END;
/

Code Magyarázat:

  • Code 25. sor: A 'guru_emp_det' deklarálása 'sub_emp_object' típusként.
  • Code 27. sor: Az objektum inicializálása az implicit konstruktorral. A konstruktor 5 paraméterrel rendelkezik (4 attribútum a PARENT típusból és 1 attribútum a SUB típusból). Az utolsó paraméter (1002) határozza meg a default_manager attribútum értékét.
  • Code 28. sor: Az „insert_default_mgr” tag meghívása a konstruktorban átadott alapértelmezett kezelőazonosítóval rendelkező rekord beszúrásához.

A PL/SQL objektumok egyenlősége

Az azonos objektumtípusba tartozó objektumpéldányok összehasonlíthatók egyenlőség szempontjából. Ehhez az objektumtípushoz egy speciális metódusra, az ORDER metódusra van szükség.

Ennek az ORDER metódusnak egy numerikus típust visszaadó függvénynek kell lennie. Két paramétert fogad bemenetként (első paraméter: a saját objektumpéldány azonosítója; második paraméter: egy másik objektumpéldány azonosítója).

A két objektumpéldány azonosítóját összehasonlítjuk, és az eredményt számként adjuk vissza.

  • A pozitív érték azt jelzi, hogy a SELF objektumpéldány nagyobb értékű, mint a másik példány.
  • A negatív érték azt jelzi, hogy a SELF objektumpéldány kisebb, mint a másik példány.
  • A nulla azt jelzi, hogy a SELF objektumpéldány egyenlő a másik példánnyal.
  • Ha bármelyik példány null, a függvény null értéket ad vissza.

Az alábbi képernyőkép az ORDER tagfüggvény szintaxisát mutatja, amelyet a típustörzsben kell szerepeltetni az egyenlőség-ellenőrzéshez.

ORDER tagfüggvény szintaxis, amely objektumpéldányok egyenlőség szerinti összehasonlítására szolgál

CREATE TYPE BODY<object_type_name_ 1>AS OBJECT
(
  ORDER MEMBER FUNCTION match(<parameter> object_type_name_ 1)
  RETURN INTEGER IS
  BEGIN
    IF <attribute_name>parameter <attribute_name>THEN
      RETURN -1; --any negative number will do
    ELSIF id>c.id THEN
      RETURN 1; --any positive number will do
    ELSE
      RETURN 0;
    END IF;
  END;
  .
  .
);
/

Szintaxis magyarázata:

  • A fenti szintaxis az ORDER függvényt mutatja, amelyet a típustörzsben kell szerepeltetni az egyenlőség-ellenőrzéshez.
  • A függvény paraméterének azonos objektumtípusú példánynak kell lennie.
  • A függvényt „obj_instance_1.match(obj_instance_2)” néven hívhatjuk meg, és ez a kifejezés a megadott numerikus értéket adja vissza, ahol az obj_instance_1 és obj_instance_2 az objektumtípus példányai.

Példa 1: A következő példában két objektumot hasonlítunk össze. Létrehozunk két példányt, és összehasonlítjuk közöttük a 'salary' attribútumot. Ezt két lépésben tesszük.

  • 1. lépés: Hozza létre az objektumtípust és a törzset.
  • 2. lépés: Hozz létre egy anonim blokkot az objektumpéldányok összehasonlításához.

1. lépés) Az objektumtípus és a törzs létrehozása.

Az alábbi képernyőképek az emp_object_equality specifikációt és annak törzsét mutatják, amely a salary attribútumot összehasonlító ORDER függvényt definiálja.

Az emp_object_equality objektumtípus-specifikáció létrehozása ORDER függvénnyel Az emp_object_equality típusú törzs definiálása, amely a salary attribútumot hasonlítja össze

CREATE TYPE emp_object_equality AS OBJECT(
salary NUMBER,
ORDER MEMBER FUNCTION equals(c emp_object_equality)RETURN INTEGER);
/
CREATE TYPE BODY emp_object_equality AS
ORDER MEMBER FUNCTION equals(c emp_object_equality)RETURN INTEGER 
IS
BEGIN
IF salary<c.salary
THEN RETURN -1;
ELSIF salary>c.salary
THEN RETURN 1;
ELSE
RETURN 0;
END IF;
END;
END;
/

Code Magyarázat:

  • Code 1-4. sor: Az 'emp_object_equality' objektumtípus létrehozása 1 attribútummal és 1 taggal.
  • Code 6-16. sor: Az ORDER függvény definiálása, amely összehasonlítja a SELF példány és a paraméterpéldány 'salary' attribútumát. Negatív értéket ad vissza, ha a SELF fizetés kisebb, pozitív értéket, ha a SELF fizetés nagyobb, és 0-t, ha a fizetések egyenlőek.

Code output:

Típus létrehozva

2. lépés) Névtelen blokk létrehozása az objektumpéldányok összehasonlításához.

Az alábbi képernyőkép egy anonim blokkot mutat, amely két emp_object_equality példányt hasonlít össze fizetés szerint.

Névtelen blokk, amely két emp_object_equality példányt hasonlít össze fizetés szerint

DECLARE
l_obj_1 emp_object_equality;
l_obj_2 emp_object_equality;
BEGIN
l_obj_1:=emp_object_equality(15000); 
l_obj_2:=emp_object_equality(17000);
IF l_obj_1.equals(l_obj_2)>0
THEN
Dbms_output.put_line('Salary of first instance is greater');
ELSIF l_obj_1.equals(l_obj_2)<0
THEN
Dbms_output.put_line('Salary of second instance is greater'); 
ELSE
Dbms_output.put_line('Salaries are equal');
END IF;
END;
/

teljesítmény

Salary of second instance is greater

Code Magyarázat:

  • Code 20. sor: Az 'emp_obj_equality' típusú 'l_obj_1' deklarálása.
  • Code 21. sor: Az 'emp_obj_equality' típusú 'l_obj_2' deklarálása.
  • Code 23. sor: Az 'l_obj_1' inicializálása '15000' fizetési értékkel.
  • Code 24. sor: Az 'l_obj_2' inicializálása '17000' fizetési értékkel.
  • Code 25-33. sor: Az üzenet kinyomtatása az ORDER függvény által visszaadott szám alapján.

GYIK

Egy objektumtípus egyetlen valós világbeli entitást modellez attribútumok és metódusok segítségével. gyűjtemény – egy VARRAY, beágyazott tábla vagy asszociatív tömb – egy adattípus számos elemét tartalmazza. Az objektumtípusok a struktúrát és a viselkedést írják le, míg a gyűjtemények több értéket tárolnak.

Mindkettő objektumpéldányokat hasonlít össze. A MAP metódus egyetlen skaláris értéket ad vissza, amely Oracle az objektumok rendezésére vagy összehasonlítására szolgál, míg az ORDER metódus két példányt hasonlít össze közvetlenül, és negatív, nulla vagy pozitív számot ad vissza. Egy típus definiálhatja az egyiket vagy a másikat, mindkettőt nem.

Igen. Létrehozhat egy objektumtáblát, ahol minden sor egy objektumpéldány, vagy használhat egy objektumtípust egy táblaoszlop adattípusaként. Ez lehetővé teszi Oracle A strukturált objektumokat közvetlenül az adatbázisban kell tárolni, ne csak a memóriában.

Egy NEM PÉLDÁNYOZHATÓ típus nem tud közvetlenül objektumokat létrehozni; absz. függvényként működik.tract alapú, amelyet más típusok kiterjesztenek. A NOT FINAL-lal kombinálva egy szupertípust definiál, amelynek altípusai a deklarált metódusok konkrét implementációját biztosítják.

Az ALTER TYPE paranccsal attribútumok és metódusok hozzáadhatók vagy eltávolíthatók, a CASCADE paranccsal frissíthetők a függő objektumok, a DROP TYPE paranccsal pedig eltávolíthatók a típus. A táblák vagy más típusok által továbbra is használt típusokat nem lehet eltávolítani, amíg ezeket a függőket először nem kezelik.

A típusnevekhez kérdezd le az adatszótár nézeteit (USER_TYPES és ALL_TYPES), az attribútumaikhoz és metódusaikhoz pedig a USER_TYPE_ATTRS és USER_TYPE_METHODS nézeteket. Ezek a nézetek lehetővé teszik egy meglévő objektummodell auditálását a forráskód olvasása nélkül.

Igen. GitHub másodpilóta vázlatok CREATE TYPE specifikációkat, TYPE BODY metódusokat, konstruktorokat és ORDER függvényeket hozhat létre egy megjegyzésből. RevA generált típus telepítése előtt tekintse meg az attribútum adattípusait, a konstruktor paramétereit és az öröklési záradékokat.

A mesterséges intelligencia asszisztensei elemzik a táblázataidat, és objektumtípusokat, attribútumtérképet javasolnak.pingés az öröklődési hierarchiákat. Ez a gépi tanulási áttekintés a redundáns attribútumokat, a hiányzó konstruktorokat és a túlzottan mély öröklődést még az objektummodell éles környezetbe kerülése előtt megjelöli, javítva ezzel a karbantarthatóságot.

Foglald össze ezt a bejegyzést a következőképpen: