Oracle PL/SQL tipovi objekata: CREATE TYPE s primjerima

⚡ Pametni sažetak

Objektni tipovi u PL/SQL-u donose objektno orijentirano programiranje u Oracle, što vam omogućuje modeliranje entiteta iz stvarnog svijeta s atributima i metodama. Podržavaju konstruktore, nasljeđivanje i usporedbu jednakosti, tako da jedan tip na razini sheme može pohranjivati ​​i obrađivati ​​strukturirane podatke.

  • 🧱 Komponente tipa objekta: Objektni tip kombinira atribute koji pohranjuju podatke i članove, ili metode, koje definiraju njegovu logiku obrade.
  • 🏗️ Stvori objekt: Tipovi objekata stvaraju se na razini sheme pomoću CREATE TYPE, a njihove metode definirane su u zasebnom CREATE TYPE BODY-ju.
  • 🔧 Konstruktori: Svaki tip objekta ima implicitni konstruktor nazvan po tipu, a možete definirati eksplicitni konstruktor za postavljanje zadanih vrijednosti.
  • 🧬 nasljedstvo: Nadređeni tip koji nije FINAL proširuje se s UNDER, pa podtip nasljeđuje sve roditeljske atribute i članove.
  • ⚖️ Jednakost: Funkcija članica ORDER uspoređuje dvije instance objekta i vraća negativni, nula ili pozitivan broj.
  • 🤖 AI pomoć: AI asistenti poput GitHub Copilota izrađuju CREATE TYPE definicije, konstruktore i ORDER metode iz komentara.

Oracle PL/SQL tipovi objekata koji prikazuju CREATE TYPE s atributima i metodama

Što je vrsta objekta u PL/SQL?

Objektno orijentirano programiranje posebno je prikladno za izgradnju višekratno upotrebljivih komponenti i složenih aplikacija. Programi su organizirani oko "objekata", a ne oko "akcija"; to jest, dizajnirani su za rad i interakciju s cijelim objektom, a ne s jednom akcijom. Ovaj pristup omogućuje programeru popunjavanje i manipuliranje detaljima na razini objekta i entiteta.

Donja slika prikazuje primjer tipa objekta u kojem se bankovni račun tretira kao entitet objekta. Atributi objekta sadrže vrijednosti - za bankovni račun to su broj računa, stanje na bankovnom računu i tako dalje - dok metode objekta opisuju radnje poput izračuna kamatne stope ili generiranja bankovnog izvoda, od kojih svaka zahtijeva dovršetak procesa.

Bankovni račun modeliran kao objektni tip s atributima i metodama u PL/SQL-u

In PL / SQLObjektno orijentirano programiranje temelji se na tipovima objekata. Tip objekta može predstavljati bilo koji entitet iz stvarnog svijeta. U donjim odjeljcima istražuju se tipovi objekata, njihove komponente te kako ih stvoriti i koristiti.

Komponente tipova objekata

PL/SQL objektni tip sadrži uglavnom dvije komponente.

  1. Značajke
  2. Članovi/Metode

Značajke

Atributi su stupci ili polja u kojima se pohranjuju podaci. Svaki atribut je mapiran na tip podataka koji definira tip obrade i pohrane za taj atribut. Atribut može biti bilo kojeg valjanog PL/SQL tip podataka, ili može biti drugog tipa objekta.

Članovi/Metode

Članovi ili metode su potprogrami definirani unutar tipa objekta. Ne koriste se za pohranu podataka; umjesto toga definiraju obradu koja se izvodi unutar tipa objekta - na primjer, provjeru valjanosti podataka prije popunjavanja objekta. Deklarirani su u specifikaciji tipa objekta i definirani u tijelu tipa objekta. Tijelo je opcionalno: ako nema članova, tip objekta nema dio tijela.

Stvori objekt u Oracle

Tip objekta ne može se stvoriti na razini potprograma; može se stvoriti samo na razini sheme. Nakon što je tip objekta definiran u shemi, može se koristiti u potprogramima. Tip objekta stvara se pomoću naredbe „CREATE TYPE“, a tijelo tipa može se stvoriti tek nakon što njegov tip objekta postoji.

Snimke zaslona u nastavku prikazuju sintaksu CREATE TYPE za specifikaciju objekta i sintaksu CREATE TYPE BODY koja definira njegove metode.

Sintaksa CREATE TYPE koja definira specifikaciju objekta s atributima u Oracle Sintaksa CREATE TYPE BODY koja definira metode PL/SQL objektnog tipa

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje stvaranje OBJEKTA s atributima i TIJELA OBJEKTA s metodama.
  • Metode također mogu biti preopterećene u tijelu objekta.

Inicijalizacija deklaracije tipa objekta

Kao i druge komponente u PL/SQL-u, tipovi objekata moraju se deklarirati prije nego što se koriste u programu. Nakon što je tip objekta kreiran, može se koristiti u deklarativnom dijelu potprograma za deklariranje varijable tog tipa objekta.

Kad god se varijabla deklarira kao objektni tip, tijekom izvođenja programa stvara se nova instanca objektnog tipa, a na tu novostvorenu instancu se referira naziv varijable. Na taj način, jedan objektni tip može pohraniti više vrijednosti pod različitim instancama.

Snimka zaslona u nastavku prikazuje varijablu deklariranu kao objektni tip unutar PL/SQL blok.

Deklariranje varijable objektnog tipa u deklarativnom dijelu PL/SQL bloka

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje deklaraciju varijabla kao tip objekta u deklarativnom dijelu.

Nakon što je varijabla deklarirana kao objektni tip u potprogramu, ona je atomski null - cijeli objekt je sam po sebi null. Mora se inicijalizirati vrijednostima prije nego što se može koristiti u programu. Objekti se inicijaliziraju pomoću konstruktora.

Konstruktori su implicitne metode objekta na koje se može referirati s istim imenom kao i tip objekta. Snimka zaslona u nastavku prikazuje inicijalizaciju instance tipa objekta.

Inicijalizacija instance objektnog tipa na null pomoću konstruktora

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje inicijalizaciju instance tipa objekta s null vrijednošću.
  • Sam objekt više nije null nakon što je inicijaliziran, ali atributi unutar objekta ostaju null sve dok im se ne dodijele vrijednosti.

Konstruktori

Konstruktori su implicitne metode objekta na koje se može referirati s istim imenom kao i tip objekta. Kad god se na objekt referira prvi put, ovaj konstruktor se implicitno poziva.

Objekte možete inicijalizirati i pomoću ovih konstruktora. Konstruktor se može eksplicitno definirati definiranjem člana u tijelu tipa objekta s istim imenom kao i tip objekta.

Primjer 1: U sljedećem primjeru koristimo član tipa objekta za umetanje zapisa u emp tablicu s vrijednostima ('RRR', 1005, 20000, 1000) i ('PPP', 1006, 20000, 1001). Nakon što su podaci umetnuti, prikazujemo ih pomoću člana tipa objekta. Također koristimo eksplicitni konstruktor za popunjavanje ID-a upravitelja zadanom vrijednošću 1001 za drugi zapis.

Izvršavamo ga u sljedećim koracima.

  • Korak 1: Izradite tip objekta i tijelo tipa objekta.
  • Korak 2: Izradite anonimni blok za pozivanje tipa objekta putem implicitnog konstruktora za emp_no 1005.
  • Korak 3: Izradite anonimni blok za pozivanje tipa objekta putem eksplicitnog konstruktora za emp_no 1006.

Korak 1) Izradite tip objekta i tijelo tipa objekta.

Snimka zaslona u nastavku prikazuje specifikaciju tipa objekta emp_object koja se stvara s njezinim atributima i članovima.

Izrada specifikacije tipa objekta emp_object s atributima i članovima

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

Snimka zaslona u nastavku prikazuje tijelo tipa emp_object koje se stvara pomoću eksplicitnog konstruktora i procedura članova.

Definiranje tijela tipa emp_object s eksplicitnim konstruktorom i procedurama članova

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 Objašnjenje

  • Code redak 1-9: Izrada objekta tipa 'emp_object' s 4 atributa i 3 člana. Sadrži definiciju konstruktora sa samo 3 parametra. (Stvarni implicitni konstruktor sadrži broj parametara jednak broju atributa prisutnih u objektu tipa.)
  • Code redak 10: Izrada tijela tipa.
  • Code redak 11-21: Definiranje eksplicitnog konstruktora. Dodjeljivanje vrijednosti parametara atributima i dodjeljivanje atributu 'manager' zadane vrijednosti '1001'.
  • Code redak 22-26: Definiranje člana 'insert_records', u kojem se vrijednosti atributa ubacuju u tablicu 'emp'.
  • Code redak 27-34: Definiranje člana 'display_records', koji prikazuje vrijednosti atributa tipa objekta.

Izlaz:

Vrsta je stvorena

Tijelo tipa stvoreno

Korak 2) Stvaranje anonimnog bloka za pozivanje kreiranog tipa objekta putem implicitnog konstruktora za emp_no 1005.

Snimka zaslona u nastavku prikazuje anonimni blok koji poziva emp_object putem implicitnog konstruktora.

Anonimni blok poziva emp_object putem implicitnog konstruktora za emp_no 1005

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 Objašnjenje

  • Code redak 37-45: Umetanje zapisa pomoću implicitnog konstruktora. Poziv konstruktora sadrži stvarni broj vrijednosti atributa.
  • Code redak 38: Deklarira 'guru_emp_det' kao tip objekta 'emp_object'.
  • Code redak 41: Naredba 'guru_emp_det.display_records' poziva član 'display_records' i prikazuju se vrijednosti atributa.
  • Code redak 42: Naredba 'guru_emp_det.insert_records' poziva član 'insert_records' i vrijednosti atributa se ubacuju u tablicu. Blok zatim potvrđuje (commit) transakcija.

Izlaz:

Ime zaposlenika: RRR

Broj zaposlenika: 1005

Plaća: 20000

Voditelj: 1000

Korak 3) Stvaranje anonimnog bloka za pozivanje kreiranog tipa objekta putem eksplicitnog konstruktora za emp_no 1006.

Snimka zaslona u nastavku prikazuje anonimni blok koji poziva emp_object putem eksplicitnog konstruktora s tri argumenta.

Anonimni blok poziva emp_object putem eksplicitnog konstruktora za emp_no 1006

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

Izlaz

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

Code Objašnjenje:

  • Code redak 46-53: Umetanje zapisa pomoću eksplicitnog konstruktora.
  • Code redak 46: Deklarira 'guru_emp_det' kao tip objekta 'emp_object'.
  • Code redak 50: Naredba 'guru_emp_det.display_records' poziva član 'display_records' i prikazuju se vrijednosti atributa.
  • Code redak 51: Naredba 'guru_emp_det.insert_records' poziva član 'insert_records' i vrijednosti atributa se ubacuju u tablicu. Budući da se prosljeđuju samo tri argumenta, eksplicitni konstruktor postavlja ID upravitelja na njegovu zadanu vrijednost 1001.

Nasljeđivanje u tipu objekta

Svojstvo nasljeđivanja omogućuje podobjektovom tipu pristup svim atributima i članovima nadređenog tipa objekta ili nadređenog tipa objekta.

Tip podobjekta naziva se naslijeđeni tip objekta, a tip nadređenog objekta naziva se tip roditeljskog objekta. Sintaksa u nastavku prikazuje kako stvoriti roditeljske i naslijeđene tipove objekata. Snimka zaslona u nastavku prikazuje sintaksu roditeljskog (SUPER) tipa označenu kao NIJE KONAČNO.

Sintaksa CREATE TYPE za NOT FINAL nadređeni tip objekta koji se koristi u nasljeđivanju

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje stvaranje tipa SUPER. Klauzula NOT FINAL omogućuje nasljeđivanje tipa.

Snimka zaslona u nastavku prikazuje naslijeđenu sintaksu tipa (SUB) stvorenu ključnom riječi UNDER.

Sintaksa CREATE TYPE UNDER za tip podobjekta koji nasljeđuje od roditelja

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje stvaranje SUB tipa. Sadrži sve članove i atribute iz nadređenog tipa objekta.

Primjer 1: U donjem primjeru koristimo svojstvo nasljeđivanja za umetanje zapisa s ID-om upravitelja '1002' za zapis ('RRR', 1007, 20000). Program izvršavamo u sljedećim koracima.

  • Korak 1: Kreirajte tip SUPER.
  • Korak 2: Izradite SUB tip i tijelo.
  • Korak 3: Izradite anonimni blok za pozivanje tipa SUB.

Korak 1) Kreirajte SUPER tip ili Parent tip.

Snimka zaslona u nastavku prikazuje kako se supertip emp_object stvara pomoću klauzule NOT FINAL.

Stvaranje nadtipa emp_object NOT FINAL za primjer nasljeđivanja

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 Objašnjenje:

  • Code redak 1-9: Izrada tipa objekta 'emp_object' s 4 atributa i 3 člana. Sadrži definiciju konstruktora sa samo 3 parametra. Deklariran je kao 'NOT FINAL', pa je roditeljski tip.

Korak 2) Kreirajte SUB tip pod SUPER tipom.

Snimka zaslona u nastavku prikazuje naslijeđeni tip sub_emp_object i njegovo tijelo koje se stvara.

Stvaranje naslijeđenog tipa sub_emp_object i njegovog tijela pomoću 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 Objašnjenje:

  • Code redak 10-13: Stvaranje 'sub_emp_object' kao naslijeđenog tipa s jednim dodatnim atributom 'default_manager' i deklaracijom procedure člana.
  • Code redak 14: Stvaranje tijela za naslijeđeni tip objekta.
  • Code redak 16-21: Definiranje procedure člana koja ubacuje zapise u tablicu 'emp' s vrijednostima iz objekta tipa SUPER, osim vrijednosti upravitelja. Za vrijednost upravitelja koristi se 'default_manager' iz tipa SUB.

Korak 3) Izrada anonimnog bloka za pozivanje SUB tipa.

Snimka zaslona u nastavku prikazuje anonimni blok koji poziva tip SUB i umeće zadani ID upravitelja.

Anonimni blok poziva tip sub_emp_object za umetanje zadanog ID-a upravitelja

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 Objašnjenje:

  • Code redak 25: Deklariranje 'guru_emp_det' kao tipa 'sub_emp_object'.
  • Code redak 27: Inicijalizacija objekta implicitnim konstruktorom. Konstruktor ima 5 parametara (4 atributa tipa PARENT i 1 atribut tipa SUB). Posljednji parametar (1002) definira vrijednost atributa default_manager.
  • Code redak 28: Pozivanje člana 'insert_default_mgr' za umetanje zapisa s zadanim ID-om upravitelja proslijeđenim u konstruktoru.

Jednakost PL/SQL objekata

Instance objekata koje pripadaju istom tipu objekta mogu se uspoređivati ​​radi jednakosti. Za to je tipu objekta potrebna posebna metoda koja se naziva ORDER metoda.

Ova ORDER metoda trebala bi biti funkcija koja vraća numerički tip. Uzima dva parametra kao ulaz (prvi parametar: ID instance samog objekta; drugi parametar: ID druge instance objekta).

Uspoređuju se ID-ovi dviju instanci objekta, a rezultat se vraća kao broj.

  • Pozitivna vrijednost označava da je instanca SELF objekta veća od druge instance.
  • Negativna vrijednost označava da je instanca SELF objekta manja od druge instance.
  • Nula označava da je instanca SELF objekta jednaka drugoj instanci.
  • Ako je bilo koja instanca null, funkcija vraća null.

Snimka zaslona u nastavku prikazuje sintaksu funkcije članice ORDER koja mora biti uključena u tijelo tipa za provjeru jednakosti.

Sintaksa ORDER funkcije članice koja se koristi za usporedbu instanci objekata radi jednakosti

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

Objašnjenje sintakse:

  • Gornja sintaksa prikazuje funkciju ORDER koja mora biti uključena u tijelo tipa za provjeru jednakosti.
  • Parametar za ovu funkciju trebao bi biti instanca istog tipa objekta.
  • Funkcija se može pozvati kao „obj_instance_1.match(obj_instance_2)“, a ovaj izraz vraća prikazanu numeričku vrijednost, gdje su obj_instance_1 i obj_instance_2 instance tipa objekta.

Primjer 1: U sljedećem primjeru uspoređujemo dva objekta. Stvaramo dvije instance i uspoređujemo atribut 'plaća' između njih. To radimo u dva koraka.

  • Korak 1: Kreirajte tip i tijelo objekta.
  • Korak 2: Izradite anonimni blok za usporedbu instanci objekta.

Korak 1) Izrada tipa i tijela objekta.

Snimke zaslona u nastavku prikazuju specifikaciju emp_object_equality i njezino tijelo, koje definira funkciju ORDER koja uspoređuje atribut salary.

Izrada specifikacije tipa objekta emp_object_equality pomoću funkcije ORDER Definiranje tijela tipa emp_object_equality koje uspoređuje atribut salary

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 Objašnjenje:

  • Code redak 1-4: Izrada objekta tipa 'emp_object_equality' s 1 atributom i 1 članom.
  • Code redak 6-16: Definiranje funkcije ORDER koja uspoređuje atribut 'plaća' instance SELF i instance parametra. Vraća negativnu vrijednost ako je SELF plaća manja, pozitivnu vrijednost ako je SELF plaća veća i 0 ako su plaće jednake.

Code Izlaz:

Vrsta je stvorena

Korak 2) Izrada anonimnog bloka za usporedbu instanci objekta.

Snimka zaslona u nastavku prikazuje anonimni blok koji uspoređuje dvije instance emp_object_equality prema plaći.

Anonimni blok koji uspoređuje dvije instance emp_object_equality prema plaći

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

Izlaz

Salary of second instance is greater

Code Objašnjenje:

  • Code redak 20: Deklariranje 'l_obj_1' tipa 'emp_object_equality'.
  • Code redak 21: Deklariranje 'l_obj_2' tipa 'emp_object_equality'.
  • Code redak 23: Inicijalizacija 'l_obj_1' s vrijednošću plaće '15000'.
  • Code redak 24: Inicijalizacija 'l_obj_2' s vrijednošću plaće '17000'.
  • Code redak 25-33: Ispis poruke na temelju broja koji je vratila funkcija ORDER.

Pitanja i odgovori

Objektni tip modelira jedan entitet iz stvarnog svijeta s atributima i metodama. zbirka — VARRAY, ugniježđena tablica ili asocijativni niz — sadrži mnogo elemenata jednog tipa podataka. Tipovi objekata opisuju strukturu i ponašanje, dok kolekcije pohranjuju više vrijednosti.

Obje uspoređuju instance objekata. MAP metoda vraća jednu skalarnu vrijednost koja Oracle koristi se za sortiranje ili usporedbu objekata, dok metoda ORDER izravno uspoređuje dvije instance i vraća negativni, nulti ili pozitivni broj. Tip može definirati jedan ili drugi, ne oba.

Da. Možete stvoriti tablicu objekata gdje je svaki redak instanca objekta ili koristiti tip objekta kao tip podataka stupca tablice. To omogućuje Oracle pohraniti strukturirane objekte izravno u bazi podataka, a ne samo u memoriji.

Tip koji nije instantiable ne može izravno stvarati objekte; djeluje kao abs.tract baza koju proširuju drugi tipovi. U kombinaciji s NOT FINAL, definira nadtip čiji podtipovi pružaju konkretnu implementaciju njegovih deklariranih metoda.

Koristite ALTER TYPE za dodavanje ili uklanjanje atributa i metoda, dodajte CASCADE za ažuriranje zavisnih objekata i koristite DROP TYPE za uklanjanje tipa. Tip koji još uvijek koriste tablice ili drugi tipovi ne može se ukloniti dok se prvo ne obrade ti ovisni objekti.

Upitajte prikaze rječnika podataka USER_TYPES i ALL_TYPES za nazive tipova te USER_TYPE_ATTRS i USER_TYPE_METHODS za njihove atribute i metode. Ovi prikazi omogućuju vam reviziju postojećeg objektnog modela bez čitanja izvornog koda.

Da. GitHub kopilot iz komentara izrađuje specifikacije CREATE TYPE, metode TYPE BODY, konstruktore i funkcije ORDER. RevPrije implementacije generiranog tipa pregledajte tipove podataka atributa, parametre konstruktora i klauzule nasljeđivanja.

AI asistenti analiziraju vaše tablice i predlažu tipove objekata, mapu atributapingi hijerarhije nasljeđivanja. Ovaj pregled strojnog učenja označava redundantne atribute, nedostajuće konstruktore i preduboko nasljeđivanje prije nego što objektni model dosegne produkciju, poboljšavajući održavanje.

Sažmite ovu objavu uz: