Oracle PL/SQL objektitüübid: CREATE TYPE koos näidetega

⚡ Nutikas kokkuvõte

PL/SQL-i objektitüübid toovad objektorienteeritud programmeerimise Oracle, mis võimaldab teil modelleerida reaalse maailma üksusi atribuutide ja meetodite abil. Need toetavad konstruktoreid, pärimist ja võrdsuse võrdlust, seega saab üks skeemitaseme tüüp salvestada ja töödelda struktureeritud andmeid.

  • 🧱 Objektitüübi komponendid: Objektitüüp ühendab atribuute, mis salvestavad andmeid, ja liikmeid ehk meetodeid, mis määratlevad selle töötlemisloogika.
  • 🏗️ Loo objekt: Objektitüübid luuakse skeemi tasandil käsuga CREATE TYPE ja nende meetodid defineeritakse eraldi CREATE TYPE BODY-s.
  • 🔧 Konstruktorid: Igal objektitüübil on tüübi järgi nimetatud kaudne konstruktor ja vaikeväärtuste määramiseks saab defineerida otsese konstruktori.
  • 🧬 Pärand: Ülemtüübile NOT FINAL lisatakse UNDER, seega alamtüüp pärib kõik ülemtüübi atribuudid ja liikmed.
  • 🇧🇷 Võrdsus: ORDER liikmefunktsioon võrdleb kahte objekti eksemplari ja tagastab negatiivse, nulli või positiivse arvu.
  • 🤖 AI abi: Tehisintellekti assistendid, näiteks GitHub Copilot, loovad kommentaari põhjal CREATE TYPE definitsioone, konstruktoreid ja ORDER meetodeid.

Oracle PL/SQL objektitüübid, mis näitavad CREATE TYPE'i koos atribuutide ja meetoditega

Mis on objekti tüüp PL/SQL-is?

Objektorienteeritud programmeerimine sobib eriti hästi korduvkasutatavate komponentide ja keerukate rakenduste loomiseks. Programmid on korraldatud pigem "objektide" kui "toimingute" ümber; see tähendab, et need on loodud töötama ja suhtlema terve objektiga, mitte ühe toiminguga. See lähenemisviis võimaldab programmeerijal täita ja manipuleerida detaile objekti-üksuse tasandil.

Allolev pilt kujutab näidet objektitüübist, kus pangakontot käsitletakse objektiüksusena. Objekti atribuudid hoiavad väärtusi – pangakonto puhul on need kontonumber, pangajääk jne –, samas kui objektimeetodid kirjeldavad toiminguid, näiteks intressimäära arvutamist või pangaväljavõtte genereerimist, millest igaüks nõuab protsessi läbimist.

Pangakonto, mis on modelleeritud objektitüübina koos PL/SQL-i atribuutide ja meetoditega

In PL / SQLObjektorienteeritud programmeerimine põhineb objektitüüpidel. Objektitüüp võib esindada mis tahes reaalse maailma üksust. Allpool olevad jaotised uurivad objektitüüpe, nende komponente ning seda, kuidas neid luua ja kasutada.

Objektitüüpide komponendid

PL/SQL objektitüüp sisaldab peamiselt kahte komponenti.

  1. Näitajad
  2. Liikmed/meetodid

Näitajad

Atribuudid on veerud või väljad, kuhu andmeid salvestatakse. Iga atribuut on seotud andmetüübiga, mis määrab selle atribuudi töötlemis- ja salvestustüübi. Atribuut võib olla mis tahes kehtiv PL/SQL andmetüüp, või see võib olla teist tüüpi objekti.

Liikmed/meetodid

Liikmed ehk meetodid on alamprogrammid on määratletud objektitüübi sees. Neid ei kasutata andmete salvestamiseks; selle asemel defineerivad nad objektitüübi sees teostatavat töötlemist – näiteks andmete valideerimist enne objekti täitmist. Need deklareeritakse objektitüübi spetsifikatsioonis ja defineeritakse objektitüübi kehas. Keha on valikuline: kui liikmeid pole, siis objektitüübil kehaosa puudub.

Loo objekt sisse Oracle

Objektitüüpi ei saa luua alamprogrammi tasandil; seda saab luua ainult skeemi tasandil. Kui objektitüüp on skeemis defineeritud, saab seda alamprogrammides kasutada. Objektitüüp luuakse käsuga „CREATE TYPE” ja tüübi põhiosa saab luua alles pärast seda, kui selle objektitüüp on olemas.

Allolevad ekraanipildid näitavad objektispetsifikatsiooni CREATE TYPE süntaksit ja CREATE TYPE BODY süntaksit, mis määratleb selle meetodid.

CREATE TYPE süntaks, mis defineerib objekti spetsifikatsiooni atribuutidega Oracle CREATE TYPE BODY süntaks, mis defineerib PL/SQL objektitüübi meetodeid

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;
.
.
);
/

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab objekti OBJECT loomist atribuutidega ja objekti BOJECT BODY loomist meetoditega.
  • Meetodid võivad olla ka objekti kehas ülekoormatud.

Deklaratsiooni objektitüübi initsialiseerimine

Nagu teisedki PL/SQL-i komponendid, tuleb objektitüübid enne programmis kasutamist deklareerida. Kui objektitüüp on loodud, saab seda alamprogrammi deklaratiivses osas kasutada selle objektitüübi muutuja deklareerimiseks.

Alati, kui muutuja deklareeritakse objektitüübina, luuakse käitusajal objektitüübi uus eksemplar ja sellele äsja loodud eksemplarile viidatakse muutuja nimega. Sel viisil saab üks objektitüüp salvestada mitu väärtust erinevate eksemplaride all.

Allolev ekraanipilt näitab muutujat, mis deklareeritakse objektitüübina objekti sees. PL/SQL plokk.

Objektitüübi muutuja deklareerimine PL/SQL-ploki deklaratiivses osas

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

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab a deklareerimist muutuja objektitüübina deklaratiivses osas.

Kui muutuja on alamprogrammis objektitüübina deklareeritud, on see aatomiliselt null – kogu objekt ise on null. Enne programmis kasutamist tuleb see väärtustega initsialiseerida. Objektid initsialiseeritakse konstruktorite abil.

Konstruktorid on objekti kaudne meetod, millele saab viidata sama nimega mis objektitüüp. Allolev ekraanipilt näitab objektitüübi eksemplari initsialiseerimist.

Objektitüübi eksemplari initsialiseerimine nulliks selle konstruktori abil

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

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab objektitüübi eksemplari initsialiseerimist nullväärtusega.
  • Objekt ise ei ole pärast initsialiseerimist enam null, kuid objekti sees olevad atribuudid jäävad nulliks, kuni neile väärtused määratakse.

Konstruktorid

Konstruktorid on objekti kaudne meetod, millele saab viidata sama nimega, mis objektitüüp. Alati, kui objektile esimest korda viidatakse, kutsutakse seda konstruktorit kaudselt välja.

Samuti saate objekte nende konstruktorite abil initsialiseerida. Konstruktori saab defineerida selgesõnaliselt, defineerides objektitüübi kehas liikme, millel on sama nimi kui objektitüübil.

Näide 1: Järgmises näites kasutame objektitüübi liiget, et lisada emp-tabelisse kirjeid väärtustega ('RRR', 1005, 20000, 1000) ja ('PPP', 1006, 20000, 1001). Kui andmed on sisestatud, kuvame need objektitüübi liikme abil. Samuti kasutame selgesõnalist konstruktorit, et täita halduri ID teise kirje vaikeväärtusega 1001.

Me teostame selle järgmistes etappides.

  • 1. samm: looge objektitüüp ja objektitüübi põhitekst.
  • 2. samm: looge anonüümne plokk, et kutsuda objektitüüpi emp_no 1005 jaoks implitsiitse konstruktori kaudu.
  • 3. samm: looge anonüümne plokk, et kutsuda objektitüüpi emp_no 1006 jaoks selgesõnalise konstruktori kaudu.

1. samm) Looge objektitüüp ja objektitüübi sisu.

Allolev ekraanipilt näitab emp_object objektitüübi spetsifikatsiooni loomist koos selle atribuutide ja liikmetega.

Objektitüübi spetsifikatsiooni emp_object loomine atribuutide ja liikmetega

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);
/

Allolev ekraanipilt näitab emp_object tüübi keha loomist selgesõnalise konstruktori ja liikmesprotseduuridega.

Tüübi emp_object defineerimine selgesõnalise konstruktori ja liikmesprotseduuridega

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 Selgitus

  • Code rida 1-9: 'emp_object' objektitüübi loomine 4 atribuudi ja 3 liikmega. See sisaldab konstruktori definitsiooni ainult 3 parameetriga. (Tegelik kaudne konstruktor sisaldab parameetrite arvu, mis võrdub objektitüübis esinevate atribuutide arvuga.)
  • Code rida 10: Tüübikeha loomine.
  • Code rida 11-21: Eksplitsiitse konstruktori defineerimine. Parameetrite väärtuste määramine atribuutidele ja atribuudile 'manager' vaikeväärtuse '1001' määramine.
  • Code rida 22-26: Liikme 'insert_records' defineerimine, mille abil atribuudi väärtused lisatakse tabelisse 'emp'.
  • Code rida 27-34: Liikme 'display_records' defineerimine, mis kuvab objektitüübi atribuutide väärtusi.

Väljund:

Tüüp loodud

Tüüp keha loodud

Step 2) Anonüümse ploki loomine loodud objektitüübi kutsumiseks emp_no 1005 jaoks implitsiitse konstruktori kaudu.

Allolev ekraanipilt näitab anonüümset plokki, mis kutsub emp_object funktsiooni läbi implitsiitse konstruktori.

Anonüümne plokk kutsub emp_object funktsiooni välja implitsiitse konstruktori kaudu emp_no 1005 jaoks

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 Selgitus

  • Code rida 37-45: Kirjete sisestamine implitsiitse konstruktori abil. Konstruktori kutsumine sisaldab atribuudiväärtuste tegelikku arvu.
  • Code rida 38: Deklareerib 'guru_emp_det' objektitüübina 'emp_object'.
  • Code rida 41: Lause 'guru_emp_det.display_records' kutsub esile liikme 'display_records' ja atribuudi väärtused kuvatakse.
  • Code rida 42: Lause 'guru_emp_det.insert_records' kutsub esile elemendi 'insert_records' ja atribuudi väärtused lisatakse tabelisse. Seejärel kinnitab plokk tehing.

Väljund:

Töötaja nimi: RRR

Töötajate arv: 1005

Palk: 20000 XNUMX

Juht: 1000

Step 3) Anonüümse ploki loomine loodud objektitüübi kutsumiseks emp_no 1006 jaoks selgesõnalise konstruktori kaudu.

Allolev ekraanipilt näitab anonüümset plokki, mis kutsub emp_object funktsiooni välja selgesõnalise konstruktori kaudu kolme argumendiga.

Anonüümne plokk kutsub emp_object funktsiooni välja emp_no 1006 selgesõnalise konstruktori kaudu

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;
/

Väljund

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

Code Selgitus:

  • Code rida 46-53: Kirje sisestamine selgesõnalise konstruktori abil.
  • Code rida 46: Deklareerib 'guru_emp_det' objektitüübina 'emp_object'.
  • Code rida 50: Lause 'guru_emp_det.display_records' kutsub esile liikme 'display_records' ja atribuudi väärtused kuvatakse.
  • Code rida 51: Lause 'guru_emp_det.insert_records' kutsub esile liikme 'insert_records' ja atribuudi väärtused lisatakse tabelisse. Kuna edastatakse ainult kolm argumenti, määrab selgesõnaline konstruktor halduri ID vaikeväärtuseks 1001.

Pärand objektitüübis

Pärimisomadus võimaldab alamobjektitüübil juurde pääseda kõigile ülemobjektitüübi ehk vanemobjektitüübi atribuutidele ja liikmetele.

Alamobjekti tüüpi nimetatakse päritud objektitüübiks ja superobjekti tüüpi nimetatakse vanemobjekti tüübiks. Allolev süntaks näitab, kuidas luua vanem- ja päritud objektitüüpe. Allolev ekraanipilt näitab vanemtüübi (SUPER) süntaksit, mis on märgitud kui NOT FINAL.

Pärimisel kasutatava ülemobjektitüübi NOT FINAL loomise tüübi süntaks

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

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab SUPER tüübi loomist. NOT FINAL klausel võimaldab tüübi pärimist.

Allolev ekraanipilt näitab UNDER märksõnaga loodud päritud (SUB) tüübi süntaksit.

CREATE TYPE UNDER süntaks alamobjekti tüübi jaoks, mis pärineb ülemobjektilt

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

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab SUB-tüübi loomist. See sisaldab kõiki ülemobjektitüübi liikmeid ja atribuute.

Näide 1: Allolevas näites kasutame pärandi omadust, et lisada kirje ('RRR', 1007, 20000) jaoks halduri ID-ga '1002' kirje. Programmi käivitatakse järgmiste sammudega.

  • 1. samm: looge SUPER-tüüp.
  • 2. samm: looge SUB-tüüp ja sisu.
  • 3. samm: looge SUB-tüübi kutsumiseks anonüümne plokk.

1. samm) Looge SUPER-tüüp või Parent-tüüp.

Allolev ekraanipilt näitab emp_object supertüübi loomist NOT FINAL klausliga.

Pärimise näite jaoks supertüübi emp_object NOT FINAL loomine

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 Selgitus:

  • Code rida 1-9: Luuakse objektitüüp 'emp_object' nelja atribuudi ja kolme liikmega. See sisaldab konstruktori definitsiooni ainult kolme parameetriga. See on deklareeritud kui 'NOT FINAL', seega on tegemist vanemtüübiga.

2. samm) Looge SUB tüüp SUPER tüübi alla.

Allolev ekraanipilt näitab päritud tüüpi sub_emp_object ja selle lootavat sisu.

Päritud tüübi sub_emp_object ja selle sisu loomine käsuga insert_default_mgr

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 Selgitus:

  • Code rida 10-13: 'Sub_emp_object' loomine päritud tüübina koos ühe täiendava atribuudiga 'default_manager' ja liikmeprotseduuri deklaratsiooniga.
  • Code rida 14: Päritud objektitüübi sisu loomine.
  • Code rida 16-21: Liikmesprotseduuri defineerimine, mis lisab kirjed tabelisse 'emp' SUPER objektitüübi väärtustega, välja arvatud halduri väärtus. Halduri väärtuse jaoks kasutatakse SUB tüübi väärtust 'default_manager'.

3. samm) Anonüümse ploki loomine SUB-tüübi kutsumiseks.

Allolev ekraanipilt näitab anonüümset plokki, mis kutsub esile SUB tüübi ja lisab vaikimisi halduri ID.

Anonüümne plokk, mis kutsub sub_emp_object tüüpi vaikimisi halduri ID sisestamiseks

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 Selgitus:

  • Code rida 25: 'guru_emp_det' deklareerimine tüübina 'sub_emp_object'.
  • Code rida 27: Objekti initsialiseerimine implitsiitse konstruktoriga. Konstruktoril on 5 parameetrit (4 PARENT tüübi atribuuti ja 1 SUB tüübi atribuut). Viimane parameeter (1002) määrab default_manager atribuudi väärtuse.
  • Code rida 28: Liikme 'insert_default_mgr' kutsumine konstruktoris edastatud vaikehalduri ID-ga kirje lisamiseks.

PL/SQL-objektide võrdsus

Samasse objektitüüpi kuuluvate objektide eksemplare saab võrrelda võrdsuse kontrollimiseks. Selleks vajab objektitüüp spetsiaalset meetodit nimega ORDER-meetod.

See ORDER-meetod peaks olema funktsioon, mis tagastab numbrilise tüübi. See võtab sisendiks kaks parameetrit (esimene parameeter: iseobjekti eksemplari ID; teine ​​parameeter: teise objekti eksemplari ID).

Kahe objekti eksemplari ID-sid võrreldakse ja tulemus tagastatakse numbrina.

  • Positiivne väärtus näitab, et SELF-objekti eksemplar on teisest eksemplarist suurem.
  • Negatiivne väärtus näitab, et SELF-objekti eksemplar on teisest eksemplarist väiksem.
  • Null näitab, et SELF-objekti eksemplar on teise eksemplariga võrdne.
  • Kui kumbki eksemplar on null, tagastab funktsioon nulli.

Allolev ekraanipilt näitab ORDER liikmefunktsiooni süntaksit, mis tuleb võrduskontrolli jaoks tüübikehasse lisada.

ORDER liikmefunktsiooni süntaks, mida kasutatakse objektide eksemplaride võrdlemiseks võrdsuse osas

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;
  .
  .
);
/

Süntaksi selgitus:

  • Ülaltoodud süntaks näitab ORDER-funktsiooni, mis tuleb võrduskontrolli jaoks tüübikehasse lisada.
  • Selle funktsiooni parameeter peaks olema sama objektitüübi eksemplar.
  • Funktsiooni saab nimetada kujule „obj_instance_1.match(obj_instance_2)“ ja see avaldis tagastab näidatud arvväärtuse, kus obj_instance_1 ja obj_instance_2 on objektitüübi eksemplarid.

Näide 1: Järgmises näites võrdleme kahte objekti. Loome kaks eksemplari ja võrdleme nende vahel atribuuti 'salary'. Teeme seda kahes etapis.

  • 1. samm: looge objektitüüp ja sisu.
  • 2. samm: looge objekti eksemplaride võrdlemiseks anonüümne plokk.

1. samm) Objekti tüübi ja keha loomine.

Allolevad ekraanipildid näitavad spetsifikatsiooni emp_object_equality ja selle sisu, mis defineerib ORDER-funktsiooni, mis võrdleb palga atribuuti.

Objektitüübi spetsifikatsiooni emp_object_equality loomine funktsiooni ORDER abil Salary atribuuti võrdleva emp_object_equality tüübikeha defineerimine

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 Selgitus:

  • Code rida 1-4: Objektitüübi 'emp_object_equality' loomine ühe atribuudi ja ühe liikmega.
  • Code rida 6-16: Defineeritakse ORDER-funktsioon, mis võrdleb SELF-eksemplari ja parameetrieksemplari 'salary' atribuuti. See tagastab negatiivse väärtuse, kui SELF-i palk on väiksem, positiivse väärtuse, kui SELF-i palk on suurem, ja 0, kui palgad on võrdsed.

Code Väljund:

Tüüp loodud

2. samm) Anonüümse ploki loomine objekti eksemplaride võrdlemiseks.

Allolev ekraanipilt näitab anonüümset plokki, mis võrdleb kahte emp_object_equality eksemplari palga järgi.

Anonüümne plokk, mis võrdleb kahte emp_object_equality eksemplari palga järgi

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;
/

Väljund

Salary of second instance is greater

Code Selgitus:

  • Code rida 20: Deklareeritakse 'l_obj_1' tüübiga 'emp_object_equality'.
  • Code rida 21: Deklareeritakse 'l_obj_2' tüübiga 'emp_object_equality'.
  • Code rida 23: 'l_obj_1' initsialiseeritakse palgaväärtusega '15000'.
  • Code rida 24: 'l_obj_2' initsialiseeritakse palgaväärtusega '17000'.
  • Code rida 25-33: Sõnumi printimine ORDER-funktsiooni tagastatud numbri põhjal.

KKK

Objektitüüp modelleerib ühte reaalse maailma üksust atribuutide ja meetodite abil. kogumine — VARRAY, pesastatud tabel või assotsiatiivne massiiv — sisaldab ühe andmetüübi paljusid elemente. Objektitüübid kirjeldavad struktuuri ja käitumist, samas kui kollektsioonid salvestavad mitu väärtust.

Mõlemad võrdlevad objekti eksemplare. MAP-meetod tagastab ühe skalaarse väärtuse, mis Oracle kasutab objektide sortimiseks või võrdlemiseks, samas kui ORDER-meetod võrdleb kahte eksemplari otse ja tagastab negatiivse, nulli või positiivse arvu. Tüüp võib defineerida ühe või teise, mitte mõlema.

Jah. Saate luua objektitabeli, kus iga rida on objekti eksemplar, või kasutada objektitüüpi tabeli veeru andmetüübina. See võimaldab Oracle Struktureeritud objektid säilitatakse otse andmebaasis, mitte ainult mälus.

NOT INSTANTIABLE tüüp ei saa objekte otse luua; see toimib abs-tüüpi objektina.tract baas, mida teised tüübid laiendavad. Koos NOT FINAL-iga defineerib see ülemtüübi, mille alamtüübid pakuvad selle deklareeritud meetodite konkreetset implementatsiooni.

Atribuutide ja meetodite lisamiseks või eemaldamiseks kasutage funktsiooni ALTER TYPE, sõltuvate objektide värskendamiseks lisage funktsiooni CASCADE ja tüübi eemaldamiseks kasutage funktsiooni DROP TYPE. Tabelite või muude tüüpide poolt endiselt kasutatavat tüüpi ei saa enne, kui need sõltuvad on eelnevalt käsitsetud.

Tüübinimede saamiseks tehke päring andmesõnastiku vaadetest USER_TYPES ja ALL_TYPES ning nende atribuutide ja meetodite saamiseks vaadetest USER_TYPE_ATTRS ja USER_TYPE_METHODS. Need vaated võimaldavad teil auditeerida olemasolevat objektimudelit ilma lähtekoodi lugemata.

Jah. GitHubi koopia mustandid CREATE TYPE spetsifikatsioonid, TYPE BODY meetodid, konstruktorid ja ORDER funktsioonid kommentaari põhjal. RevEnne genereeritud tüübi juurutamist vaadake atribuudi andmetüüpe, konstruktori parameetreid ja pärimisklausleid.

Tehisintellekti assistendid analüüsivad teie tabeleid ja pakuvad välja objektitüüpe ning atribuutide kaartepingja pärimishierarhiad. See masinõppe ülevaade märgistab enne objektimudeli tootmiskeskkonda jõudmist üleliigsed atribuudid, puuduvad konstruktorid ja liiga sügava pärimise, parandades hooldatavust.

Võta see postitus kokku järgmiselt: