Oracle PL/SQL-objecttypen: CREATE TYPE met voorbeelden

โšก Slimme samenvatting

Objecttypen in PL/SQL brengen objectgeoriรซnteerd programmeren naar Oraclewaardoor je entiteiten uit de echte wereld kunt modelleren met attributen en methoden. Ze ondersteunen constructors, overerving en gelijkheidsvergelijkingen, zodat รฉรฉn enkel schematype gestructureerde gegevens kan opslaan en verwerken.

  • ๐Ÿงฑ Objecttypecomponenten: Een objecttype combineert attributen die gegevens opslaan en leden, of methoden, die de verwerkingslogica definiรซren.
  • ???? ๏ธ Object aanmaken: Objecttypen worden op schemaniveau aangemaakt met CREATE TYPE, en hun methoden worden gedefinieerd in een aparte CREATE TYPE BODY.
  • ๐Ÿ”ง Constructeurs: Elk objecttype heeft een impliciete constructor die naar het type is vernoemd, en je kunt een expliciete constructor definiรซren om standaardwaarden in te stellen.
  • ๐Ÿงฌ Erfenis: Een NOT FINAL-oudertype wordt uitgebreid met UNDER, waardoor een subtype alle attributen en leden van het oudertype overneemt.
  • โ€‹ Gelijkheid: Een ORDER-lidfunctie vergelijkt twee objectinstanties en retourneert een negatief, nul of positief getal.
  • ๐Ÿค– AI-assistentie: AI-assistenten zoals GitHub Copilot genereren CREATE TYPE-definities, constructors en ORDER-methoden op basis van een commentaar.

Oracle PL/SQL-objecttypen die het CREATE TYPE-object met attributen en methoden weergeven

Wat is objecttype in PL/SQL?

Objectgeoriรซnteerd programmeren is bijzonder geschikt voor het bouwen van herbruikbare componenten en complexe applicaties. Programma's zijn georganiseerd rond 'objecten' in plaats van 'acties'; dat wil zeggen, ze zijn ontworpen om te werken met en te interageren met een volledig object in plaats van een enkele actie. Deze aanpak stelt de programmeur in staat om details op objectniveau in te vullen en te manipuleren.

De onderstaande afbeelding toont een voorbeeld van een objecttype waarin een bankrekening als object wordt behandeld. De objectattributen bevatten waarden โ€“ voor een bankrekening zijn dit bijvoorbeeld het rekeningnummer en het banksaldo โ€“ terwijl de objectmethoden acties beschrijven zoals het berekenen van de rente of het genereren van een bankafschrift. Elk van deze acties vereist een proces.

Bankrekening gemodelleerd als een objecttype met attributen en methoden in PL/SQL

In PL / SQLObjectgeoriรซnteerd programmeren is gebaseerd op objecttypen. Een objecttype kan elke entiteit uit de echte wereld representeren. De onderstaande paragrafen gaan dieper in op objecttypen, hun componenten en hoe je ze kunt maken en gebruiken.

Componenten van objecttypen

Een PL/SQL-objecttype bestaat hoofdzakelijk uit twee componenten.

  1. Attributen
  2. Leden/methoden

Attributen

Attributen zijn de kolommen of velden waarin gegevens worden opgeslagen. Elk attribuut is gekoppeld aan het gegevenstype dat het verwerkings- en opslagtype voor dat attribuut definieert. Een attribuut kan van elk geldig gegevenstype zijn. PL/SQL-gegevenstype, of het kan van een ander objecttype zijn.

Leden/methoden

Leden, oftewel methoden, zijn subprogramma's Deze leden worden binnen het objecttype gedefinieerd. Ze worden niet gebruikt om gegevens op te slaan, maar definiรซren de verwerking die binnen het objecttype wordt uitgevoerd, bijvoorbeeld het valideren van gegevens voordat het object wordt gevuld. Ze worden gedeclareerd in de objecttypespecificatie en gedefinieerd in de objecttypebody. De body is optioneel: als er geen leden aanwezig zijn, heeft een objecttype geen body.

Object maken in Oracle

Een objecttype kan niet op subprogrammaniveau worden aangemaakt; dit kan alleen op schemaniveau. Zodra het objecttype in het schema is gedefinieerd, kan het in subprogramma's worden gebruikt. Het objecttype wordt aangemaakt met de instructie "CREATE TYPE", en de typebody kan pas worden aangemaakt nadat het objecttype bestaat.

De onderstaande schermafbeeldingen tonen de CREATE TYPE-syntaxis voor de objectspecificatie en de CREATE TYPE BODY-syntaxis waarmee de methoden ervan worden gedefinieerd.

De CREATE TYPE-syntaxis definieert een objectspecificatie met attributen in Oracle De CREATE TYPE BODY-syntaxis definieert de methoden van een PL/SQL-objecttype.

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

Syntaxis uitleg:

  • De bovenstaande syntax laat de creatie zien van een OBJECT met attributen en een OBJECT BODY met methoden.
  • De methoden kunnen ook overbelast raken in de objecttekst.

Verklaring Initialisatie van objecttype

Net als andere componenten in PL/SQL moeten objecttypen worden gedeclareerd voordat ze in een programma worden gebruikt. Zodra het objecttype is aangemaakt, kan het in het declaratiegedeelte van een subprogramma worden gebruikt om een โ€‹โ€‹variabele van dat objecttype te declareren.

Wanneer een variabele als objecttype wordt gedeclareerd, wordt er tijdens de uitvoering een nieuwe instantie van het objecttype aangemaakt. Deze nieuw aangemaakte instantie wordt aangeduid met de naam van de variabele. Op deze manier kan รฉรฉn objecttype meerdere waarden onder verschillende instanties opslaan.

De onderstaande schermafbeelding laat zien hoe een variabele binnen een objecttype wordt gedeclareerd. PL/SQL-blok.

Een variabele van een objecttype declareren in een declaratiegedeelte van een PL/SQL-blok.

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

Syntaxis uitleg:

  • De bovenstaande syntaxis toont de declaratie van een variabele als objecttype in het declaratieve gedeelte.

Zodra een variabele in een subprogramma als objecttype is gedeclareerd, is deze atomair null โ€” het hele object zelf is null. Het moet worden geรฏnitialiseerd met waarden voordat het in het programma kan worden gebruikt. Objecten worden geรฏnitialiseerd met behulp van constructors.

Constructors zijn de impliciete methoden van een object waarnaar verwezen kan worden met dezelfde naam als het objecttype. De onderstaande schermafbeelding toont de initialisatie van een instantie van een objecttype.

Een instantie van een objecttype initialiseren naar null met behulp van de constructor.

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

Syntaxis uitleg:

  • De bovenstaande syntax laat zien hoe een instantie van het objecttype wordt geรฏnitialiseerd met een null-waarde.
  • Het object zelf is niet langer null nadat het is geรฏnitialiseerd, maar de attributen binnen het object blijven null totdat er waarden aan worden toegekend.

constructors

Constructors zijn de impliciete methoden van een object die met dezelfde naam als het objecttype kunnen worden aangeroepen. Telkens wanneer het object voor het eerst wordt aangeroepen, wordt deze constructor impliciet aangeroepen.

Je kunt objecten ook initialiseren met behulp van deze constructors. Een constructor kan expliciet worden gedefinieerd door een lid in de objecttypebody te definiรซren met dezelfde naam als het objecttype.

Voorbeeld 1: In het volgende voorbeeld gebruiken we het objecttype-lid om records in de tabel emp in te voegen met de waarden ('RRR', 1005, 20000, 1000) en ('PPP', 1006, 20000, 1001). Nadat de gegevens zijn ingevoegd, tonen we ze met behulp van het objecttype-lid. We gebruiken ook een expliciete constructor om de manager-ID voor het tweede record te vullen met de standaardwaarde 1001.

We voeren het uit in de volgende stappen.

  • Stap 1: Maak het objecttype en de objecttypebody aan.
  • Stap 2: Maak een anoniem blok aan om het objecttype aan te roepen via de impliciete constructor voor emp_no 1005.
  • Stap 3: Maak een anoniem blok aan om het objecttype aan te roepen via de expliciete constructor voor emp_no 1006.

Stap 1) Maak een objecttype en een objecttypebody aan.

De onderstaande schermafbeelding toont hoe de specificatie van het objecttype emp_object wordt aangemaakt, inclusief de attributen en leden.

Het objecttype emp_object specificeren met attributen en leden

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

De onderstaande schermafbeelding toont hoe de body van het type emp_object wordt aangemaakt met de expliciete constructor en de lidprocedures.

Het definiรซren van de body van het emp_object-type met een expliciete constructor en lidprocedures.

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 Uitleg

  • Code regel 1-9: Het objecttype 'emp_object' wordt aangemaakt met 4 attributen en 3 leden. Het bevat de definitie van een constructor met slechts 3 parameters. (De daadwerkelijke impliciete constructor bevat evenveel parameters als het aantal attributen in het objecttype.)
  • Code lijn 10: Het tekstbestand creรซren.
  • Code regel 11-21: De expliciete constructor definiรซren. De parameterwaarden toewijzen aan de attributen en het attribuut 'manager' de standaardwaarde '1001' toekennen.
  • Code regel 22-26: Het lid 'insert_records' definiรซren, waarin de attribuutwaarden in de tabel 'emp' worden ingevoegd.
  • Code regel 27-34: Het lid 'display_records' definiรซren, dat de waarden van de objecttype-attributen weergeeft.

Output:

Type gemaakt

Typetekst gemaakt

Stap 2) Een anoniem blok aanmaken om het aangemaakte objecttype aan te roepen via de impliciete constructor voor emp_no 1005.

De onderstaande schermafbeelding toont het anonieme blok dat emp_object aanroept via de impliciete constructor.

Anoniem blok dat emp_object aanroept via de impliciete constructor voor 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 Uitleg

  • Code regel 37-45: De records worden ingevoegd met behulp van de impliciete constructor. De aanroep van de constructor bevat het werkelijke aantal attribuutwaarden.
  • Code lijn 38: Declareert 'guru_emp_det' als objecttype 'emp_object'.
  • Code lijn 41: De instructie 'guru_emp_det.display_records' roept het lid 'display_records' aan en de attribuutwaarden worden weergegeven.
  • Code lijn 42: De instructie 'guru_emp_det.insert_records' roept het lid 'insert_records' aan en de attribuutwaarden worden in de tabel ingevoegd. Het blok voert vervolgens een commit uit. transactie.

Output:

Naam werknemer: RRR

Werknemersnummer: 1005

Salaris: 20000

Beheerder: 1000

Stap 3) Een anoniem blok aanmaken om het aangemaakte objecttype aan te roepen via de expliciete constructor voor emp_no 1006.

De onderstaande schermafbeelding toont het anonieme blok dat emp_object aanroept via de expliciete constructor met drie argumenten.

Anoniem blok dat emp_object aanroept via de expliciete constructor voor 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;
/

uitgang

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

Code Uitleg:

  • Code regel 46-53: Het record invoegen met behulp van de expliciete constructor.
  • Code lijn 46: Declareert 'guru_emp_det' als objecttype 'emp_object'.
  • Code lijn 50: De instructie 'guru_emp_det.display_records' roept het lid 'display_records' aan en de attribuutwaarden worden weergegeven.
  • Code lijn 51: De instructie 'guru_emp_det.insert_records' roept het lid 'insert_records' aan en de attribuutwaarden worden in de tabel ingevoegd. Omdat er slechts drie argumenten worden doorgegeven, stelt de expliciete constructor de manager-ID in op de standaardwaarde 1001.

Overerving in objecttype

De eigenschap 'overerving' stelt een subobjecttype in staat om toegang te krijgen tot alle attributen en leden van het superobjecttype, ofwel het ouderobjecttype.

Het subobjecttype wordt het overgeรซrfde objecttype genoemd, en het superobjecttype wordt het ouderobjecttype genoemd. De onderstaande syntaxis laat zien hoe je ouder- en overgeรซrfde objecttypen kunt maken. De onderstaande schermafbeelding toont de syntaxis van het oudertype (SUPER), gemarkeerd als NOT FINAL.

CREATE TYPE-syntaxis voor een NOT FINAL-ouderobjecttype dat wordt gebruikt bij overerving.

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

Syntaxis uitleg:

  • De bovenstaande syntax laat zien hoe het SUPER-type wordt aangemaakt. De NOT FINAL-clausule maakt het mogelijk dat het type wordt overgeรซrfd.

De onderstaande schermafbeelding toont de syntaxis van het overgeรซrfde (SUB) type, gemaakt met het trefwoord UNDER.

De CREATE TYPE UNDER-syntaxis voor een subobjecttype dat overerft van een oudertype.

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

Syntaxis uitleg:

  • De bovenstaande syntax laat zien hoe het SUB-type wordt aangemaakt. Het bevat alle leden en attributen van het bovenliggende objecttype.

Voorbeeld 1: In het onderstaande voorbeeld gebruiken we de eigenschap 'overerving' om een โ€‹โ€‹record met manager-ID '1002' in te voegen voor het record ('RRR', 1007, 20000). We voeren het programma in de volgende stappen uit.

  • Stap 1: Maak het SUPER-type aan.
  • Stap 2: Maak het SUB-type en de inhoud aan.
  • Stap 3: Maak een anoniem blok aan om het SUB-type aan te roepen.

Stap 1) Maak een SUPER-type of een oudertype aan.

De onderstaande schermafbeelding laat zien hoe het supertype emp_object wordt aangemaakt met de NOT FINAL-clausule.

Het aanmaken van het supertype emp_object NOT FINAL voor het overervingsvoorbeeld.

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

  • Code regel 1-9: Het objecttype 'emp_object' wordt aangemaakt met 4 attributen en 3 leden. Het bevat de definitie van een constructor met slechts 3 parameters. Het is gedeclareerd als 'NOT FINAL', dus het is een parent-type.

Stap 2) Maak een SUB-type aan onder het SUPER-type.

De onderstaande schermafbeelding toont het overgeรซrfde type sub_emp_object en de aanmaak van de bijbehorende body.

Het overgeรซrfde type sub_emp_object en de bijbehorende body aanmaken met 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 Uitleg:

  • Code regel 10-13: Het aanmaken van 'sub_emp_object' als het overgeรซrfde type met een extra attribuut 'default_manager' en een declaratie van een lidprocedure.
  • Code lijn 14: Het creรซren van de body voor het overgeรซrfde objecttype.
  • Code regel 16-21: Definieer de lidprocedure die records invoegt in de tabel 'emp' met de waarden van het objecttype SUPER, met uitzondering van de managerwaarde. Voor de managerwaarde wordt 'default_manager' van het objecttype SUB gebruikt.

Stap 3) Een anoniem blok maken om het SUB-type aan te roepen.

De onderstaande schermafbeelding toont het anonieme blok dat het SUB-type aanroept en de standaard manager-ID invoegt.

Anoniem blok dat het type sub_emp_object aanroept om een โ€‹โ€‹standaard manager-ID in te voegen.

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

  • Code lijn 25: 'guru_emp_det' wordt gedeclareerd als type 'sub_emp_object'.
  • Code lijn 27: Het object wordt geรฏnitialiseerd met de impliciete constructor. De constructor heeft 5 parameters (4 attributen van het PARENT-type en 1 attribuut van het SUB-type). De laatste parameter (1002) definieert de waarde voor het attribuut default_manager.
  • Code lijn 28: De methode 'insert_default_mgr' wordt aangeroepen om de record in te voegen met de standaard manager-ID die in de constructor is doorgegeven.

Gelijkheid van PL/SQL-objecten

Objectinstanties die tot hetzelfde objecttype behoren, kunnen op gelijkheid worden vergeleken. Hiervoor heeft het objecttype een speciale methode nodig, de zogenaamde ORDER-methode.

Deze ORDER-methode moet een functie zijn die een numeriek type retourneert. De methode neemt twee parameters als invoer (eerste parameter: de ID van het zelfobject; tweede parameter: de ID van een ander object).

De ID's van de twee objectinstanties worden vergeleken en het resultaat wordt als een getal geretourneerd.

  • Een positieve waarde geeft aan dat de SELF-objectinstantie groter is dan de andere instantie.
  • Een negatieve waarde geeft aan dat het SELF-objectexemplaar kleiner is dan het andere exemplaar.
  • Nul geeft aan dat de SELF-objectinstantie gelijk is aan de andere instantie.
  • Als een van beide instanties null is, retourneert de functie null.

De onderstaande schermafbeelding toont de syntaxis van de ORDER-lidfunctie die in de typebody moet worden opgenomen voor de gelijkheidscontrole.

De syntaxis van de ORDER-lidfunctie wordt gebruikt om objectinstanties op gelijkheid te vergelijken.

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

Syntaxis uitleg:

  • De bovenstaande syntax toont de ORDER-functie die in de typebody moet worden opgenomen voor de gelijkheidscontrole.
  • De parameter voor deze functie moet een instantie van hetzelfde objecttype zijn.
  • De functie kan worden aangeroepen als โ€œobj_instance_1.match(obj_instance_2)โ€, en deze expressie retourneert de weergegeven numerieke waarde, waarbij obj_instance_1 en obj_instance_2 instanties zijn van het objecttype.

Voorbeeld 1: In het volgende voorbeeld vergelijken we twee objecten. We maken twee instanties aan en vergelijken het attribuut 'salaris' ertussen. We doen dit in twee stappen.

  • Stap 1: Maak het objecttype en de objectbody aan.
  • Stap 2: Maak het anonieme blok aan om de objectinstanties te vergelijken.

Stap 1) Het objecttype en de objectbody creรซren.

De onderstaande schermafbeeldingen tonen de specificatie emp_object_equality en de bijbehorende body, die de ORDER-functie definieert waarmee het salariskenmerk wordt vergeleken.

Het objecttype emp_object_equality specificeren met een ORDER-functie Het definiรซren van de body van het type emp_object_equality dat het salariskenmerk vergelijkt.

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

  • Code regel 1-4: Het objecttype 'emp_object_equality' aanmaken met 1 attribuut en 1 lid.
  • Code regel 6-16: De functie ORDER definieert een vergelijking van het 'salary'-attribuut van het SELF-exemplaar en het parameter-exemplaar. De functie retourneert een negatieve waarde als het SELF-salaris lager is, een positieve waarde als het SELF-salaris hoger is en 0 als de salarissen gelijk zijn.

Code Output:

Type gemaakt

Stap 2) Het anonieme blok creรซren om de objectinstanties te vergelijken.

De onderstaande schermafbeelding toont het anonieme blok dat twee instanties van emp_object_equality vergelijkt op basis van salaris.

Anoniem blok dat twee instanties van emp_object_equality vergelijkt op basis van salaris.

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

uitgang

Salary of second instance is greater

Code Uitleg:

  • Code lijn 20: 'l_obj_1' wordt gedeclareerd van het type 'emp_object_equality'.
  • Code lijn 21: 'l_obj_2' wordt gedeclareerd van het type 'emp_object_equality'.
  • Code lijn 23: Initialiseren van 'l_obj_1' met de salariswaarde '15000'.
  • Code lijn 24: Initialiseren van 'l_obj_2' met de salariswaarde '17000'.
  • Code regel 25-33: Het bericht wordt afgedrukt op basis van het getal dat door de ORDER-functie wordt geretourneerd.

Veelgestelde vragen

Een objecttype modelleert een enkele entiteit uit de echte wereld met attributen en methoden. Collectie Een VARRAY, geneste tabel of associatieve array bevat veel elementen van รฉรฉn gegevenstype. Objecttypen beschrijven de structuur en het gedrag, terwijl collecties meerdere waarden opslaan.

Beide methoden vergelijken objectinstanties. Een MAP-methode retourneert een enkele scalaire waarde die Oracle Een `ORDER`-methode wordt gebruikt om objecten te sorteren of te vergelijken, terwijl een `ORDER`-methode twee instanties rechtstreeks vergelijkt en een negatief, nul of positief getal retourneert. Een type kan de ene of de andere methode definiรซren, niet beide.

Ja. Je kunt een objecttabel maken waarbij elke rij een objectinstantie is, of een objecttype gebruiken als gegevenstype voor een tabelkolom. Dit maakt het mogelijk om... Oracle Gestructureerde objecten worden rechtstreeks in de database opgeslagen in plaats van alleen in het geheugen.

Een niet-instantieerbaar type kan geen objecten rechtstreeks creรซren; het fungeert als een absolute waarde.tract is een basis die door andere typen wordt uitgebreid. In combinatie met NOT FINAL definieert het een supertype waarvan de subtypen de concrete implementatie van de gedeclareerde methoden bieden.

Gebruik ALTER TYPE om attributen en methoden toe te voegen of te verwijderen, voeg CASCADE toe om afhankelijke objecten bij te werken en gebruik DROP TYPE om het type te verwijderen. Een type dat nog steeds door tabellen of andere typen wordt gebruikt, kan pas worden verwijderd nadat die afhankelijke objecten eerst zijn verwerkt.

Raadpleeg de datawoordenboekweergaven USER_TYPES en ALL_TYPES voor typenamen, en USER_TYPE_ATTRS en USER_TYPE_METHODS voor hun attributen en methoden. Met deze weergaven kunt u een bestaand objectmodel controleren zonder de broncode te hoeven lezen.

Ja. GitHub-copiloot Ontwerpt CREATE TYPE-specificaties, TYPE BODY-methoden, constructors en ORDER-functies op basis van een commentaar. RevBekijk de gegevenstypen van de attributen, de constructorparameters en de overervingsclausules voordat u het gegenereerde type implementeert.

AI-assistenten analyseren uw tabellen en suggereren objecttypen en attribuuttoewijzingen.pingen overervingshiรซrarchieรซn. Deze machine learning-review signaleert redundante attributen, ontbrekende constructors en te diepe overerving voordat het objectmodel in productie wordt genomen, waardoor de onderhoudbaarheid wordt verbeterd.

Vat dit bericht samen met: