Oracle PL/SQL-objekttyper: CREATE TYPE med exempel

โšก Smart sammanfattning

Objekttyper i PL/SQL gรถr objektorienterad programmering mรถjlig Oracle, vilket lรฅter dig modellera verkliga entiteter med attribut och metoder. De stรถder konstruktorer, arv och likhetsjรคmfรถrelse, sรฅ en enda schemanivรฅtyp kan lagra och bearbeta strukturerad data.

  • ๐Ÿงฑ Objekttypkomponenter: En objekttyp kombinerar attribut som lagrar data och medlemmar, eller metoder, som definierar dess bearbetningslogik.
  • ๐Ÿ—๏ธ Skapa objekt: Objekttyper skapas pรฅ schemanivรฅ med CREATE TYPE, och deras metoder definieras i en separat CREATE TYPE BODY.
  • ๐Ÿ”ง Konstruktรถrer: Varje objekttyp har en implicit konstruktor som รคr uppkallad efter typen, och du kan definiera en explicit konstruktor fรถr att ange standardvรคrden.
  • ๐Ÿงฌ Arv: En NOT FINAL fรถrรคldertyp utรถkas med UNDER, sรฅ en undertyp รคrver alla fรถrรคlderattribut och medlemmar.
  • โš–๏ธ Jรคmlikhet: En ORDER-medlemsfunktion jรคmfรถr tvรฅ objektinstanser och returnerar ett negativt, noll eller positivt tal.
  • ๐Ÿค– AI-hjรคlp: AI-assistenter som GitHub Copilot utarbetar CREATE TYPE-definitioner, konstruktorer och ORDER-metoder frรฅn en kommentar.

Oracle PL/SQL-objekttyper som visar CREATE TYPE med attribut och metoder

Vad รคr objekttyp i PL/SQL?

Objektorienterad programmering รคr sรคrskilt lรคmpad fรถr att bygga รฅteranvรคndbara komponenter och komplexa applikationer. Program รคr organiserade kring "objekt" snarare รคn "รฅtgรคrder"; det vill sรคga de รคr utformade fรถr att arbeta med och interagera med ett helt objekt snarare รคn en enda รฅtgรคrd. Denna metod lรฅter programmeraren fylla i och manipulera detaljer pรฅ objekt-entitetsnivรฅ.

Bilden nedan visar ett exempel pรฅ en objekttyp dรคr ett bankkonto behandlas som en objektenhet. Objektattributen innehรฅller vรคrden โ€“ fรถr ett bankkonto รคr dessa kontonummer, banksaldo och sรฅ vidare โ€“ medan objektmetoderna beskriver รฅtgรคrder som att berรคkna rรคntan eller generera ett bankutdrag, vilka var och en krรคver att en process slutfรถrs.

Bankkonto modellerat som en objekttyp med attribut och metoder i PL/SQL

In PL / SQL, objektorienterad programmering รคr baserad pรฅ objekttyper. En objekttyp kan representera vilken verklig enhet som helst. Avsnitten nedan utforskar objekttyper, deras komponenter och hur man skapar och anvรคnder dem.

Komponenter av objekttyper

En PL/SQL-objekttyp innehรฅller huvudsakligen tvรฅ komponenter.

  1. attribut
  2. Medlemmar/Metoder

attribut

Attribut รคr de kolumner eller fรคlt dรคr data lagras. Varje attribut mappas till den datatyp som definierar bearbetnings- och lagringstypen fรถr det attributet. Ett attribut kan vara av vilket giltigt PL/SQL-datatyp, eller det kan vara av en annan objekttyp.

Medlemmar/Metoder

Medlemmarna, eller metoderna, รคr underprogram definierade inuti objekttypen. De anvรคnds inte fรถr att lagra data; istรคllet definierar de den bearbetning som utfรถrs inuti objekttypen โ€“ till exempel validering av data innan objektet fylls i. De deklareras i objekttypspecifikationen och definieras i objekttypens brรถdtext. Brรถdtexten รคr valfri: om inga medlemmar finns har en objekttyp ingen brรถdtextdel.

Skapa objekt i Oracle

En objekttyp kan inte skapas pรฅ delprogramnivรฅ; den kan bara skapas pรฅ schemanivรฅ. Nรคr objekttypen har definierats i schemat kan den anvรคndas i delprogram. Objekttypen skapas med hjรคlp av kommandot "CREATE TYPE", och typtexten kan bara skapas efter att dess objekttyp finns.

Skรคrmbilderna nedan visar CREATE TYPE-syntaxen fรถr objektspecifikationen och CREATE TYPE BODY-syntaxen som definierar dess metoder.

CREATE TYPE-syntax som definierar en objektspecifikation med attribut i Oracle CREATE TYPE BODY-syntax som definierar metoderna fรถr en PL/SQL-objekttyp

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar skapandet av ett OBJECT med attribut och en OBJECT BODY med metoder.
  • Metoderna kan ocksรฅ รถverbelastas i objektkroppen.

Deklarationsinitiering av objekttyp

Liksom andra komponenter i PL/SQL mรฅste objekttyper deklareras innan de anvรคnds i ett program. Nรคr objekttypen har skapats kan den anvรคndas i ett delprograms deklarativa sektion fรถr att deklarera en variabel av den objekttypen.

Nรคr en variabel deklareras som en objekttyp skapas en ny instans av objekttypen vid kรถrning, och denna nyskapade instans refereras till med variabelnamnet. Pรฅ sรฅ sรคtt kan en enda objekttyp lagra flera vรคrden under olika instanser.

Skรคrmdumpen nedan visar en variabel som deklareras som en objekttyp inuti en PL/SQL-block.

Deklarera en variabel av en objekttyp i en deklarativ sektion fรถr PL/SQL-block

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar deklarationen av en variabel som en objekttyp i den deklarativa sektionen.

Nรคr variabeln har deklarerats som en objekttyp i ett delprogram รคr den atomiskt null โ€“ hela objektet i sig รคr null. Den mรฅste initieras med vรคrden innan den kan anvรคndas i programmet. Objekt initieras med hjรคlp av konstruktorer.

Konstruktorer รคr den implicita metoden fรถr ett objekt som kan refereras till med samma namn som objekttypen. Skรคrmdumpen nedan visar initialiseringen av en objekttypinstans.

Initiera en objekttypinstans till null med hjรคlp av dess konstruktor

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar initialiseringen av objekttypinstansen med ett nullvรคrde.
  • Sjรคlva objektet รคr inte lรคngre null nรคr det har initialiserats, men attributen inuti objektet fรถrblir null tills vรคrden tilldelas dem.

konstruktรถrer

Konstruktorer รคr den implicita metoden fรถr ett objekt som kan refereras till med samma namn som objekttypen. Nรคrhelst objektet refereras till fรถr fรถrsta gรฅngen anropas denna konstruktor implicit.

Du kan ocksรฅ initiera objekt med hjรคlp av dessa konstruktorer. En konstruktor kan definieras explicit genom att definiera en medlem i objekttypens brรถdtext med samma namn som objekttypen.

Exempel 1: I fรถljande exempel anvรคnder vi objekttypmedlemmen fรถr att infoga poster i emp-tabellen med vรคrdena ('RRR', 1005, 20000, 1000) och ('PPP', 1006, 20000, 1001). Nรคr data har infogats visar vi dem med hjรคlp av objekttypmedlemmen. Vi anvรคnder ocksรฅ en explicit konstruktor fรถr att fylla i manager-ID:t med standardvรคrdet 1001 fรถr den andra posten.

Vi utfรถr det i fรถljande steg.

  • Steg 1: Skapa objekttypen och objekttypens brรถdtext.
  • Steg 2: Skapa ett anonymt block fรถr att anropa objekttypen via den implicita konstruktorn fรถr emp_no 1005.
  • Steg 3: Skapa ett anonymt block fรถr att anropa objekttypen via den explicita konstruktorn fรถr emp_no 1006.

Steg 1) Skapa objekttyp och objekttypstext.

Skรคrmdumpen nedan visar objekttypsspecifikationen emp_object som skapas med dess attribut och medlemmar.

Skapa objekttypspecifikationen emp_object med attribut och medlemmar

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

Skรคrmdumpen nedan visar hur emp_object-typen av kroppen skapas med den explicita konstruktorn och medlemsprocedurerna.

Definiera emp_object-typens brรถdtext med en explicit konstruktor och medlemsprocedurer

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 Fรถrklaring

  • Code rad 1-9: Skapar objekttypen 'emp_object' med 4 attribut och 3 medlemmar. Den innehรฅller definitionen av en konstruktor med endast 3 parametrar. (Den faktiska implicita konstruktorn innehรฅller antalet parametrar som motsvarar antalet attribut som finns i objekttypen.)
  • Code rad 10: Skapar typkroppen.
  • Code rad 11-21: Definiera den explicita konstruktorn. Tilldela parametervรคrdena till attributen och ge attributet 'manager' standardvรคrdet '1001'.
  • Code rad 22-26: Definierar medlemmen 'insert_records', dรคr attributvรคrdena infogas i tabellen 'emp'.
  • Code rad 27-34: Definierar medlemmen 'display_records', som visar vรคrdena fรถr objekttypattributen.

Produktion:

Typ skapad

Skriv texten skapad

Steg 2) Skapar ett anonymt block fรถr att anropa den skapade objekttypen genom den implicita konstruktorn fรถr emp_no 1005.

Skรคrmdumpen nedan visar det anonyma blocket som anropar emp_object genom den implicita konstruktorn.

Anonymt blockanrop av emp_object genom den implicita konstruktorn fรถr 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 Fรถrklaring

  • Code rad 37-45: Infogar posterna med hjรคlp av den implicita konstruktorn. Anropet till konstruktorn innehรฅller det faktiska antalet attributvรคrden.
  • Code rad 38: Deklarerar 'guru_emp_det' som objekttypen 'emp_object'.
  • Code rad 41: Satsen 'guru_emp_det.display_records' anropar medlemmen 'display_records' och attributvรคrdena visas.
  • Code rad 42: Satsen 'guru_emp_det.insert_records' anropar medlemmen 'insert_records' och attributvรคrdena infogas i tabellen. Blocket bekrรคftar sedan transaktion.

Produktion:

Anstรคllds namn: RRR

Antal anstรคllda: 1005

Lรถn: 20000 XNUMX

Chef: 1000

Steg 3) Skapar ett anonymt block fรถr att anropa den skapade objekttypen genom den explicita konstruktorn fรถr emp_no 1006.

Skรคrmdumpen nedan visar det anonyma blocket som anropar emp_object genom den explicita konstruktorn med tre argument.

Anonymt blockanrop av emp_object genom den explicita konstruktorn fรถr 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;
/

Produktion

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

Code Fรถrklaring:

  • Code rad 46-53: Infoga posten med hjรคlp av den explicita konstruktorn.
  • Code rad 46: Deklarerar 'guru_emp_det' som objekttypen 'emp_object'.
  • Code rad 50: Satsen 'guru_emp_det.display_records' anropar medlemmen 'display_records' och attributvรคrdena visas.
  • Code rad 51: Satsen 'guru_emp_det.insert_records' anropar medlemmen 'insert_records' och attributvรคrdena infogas i tabellen. Eftersom endast tre argument skickas, sรคtter den explicita konstruktorn manager-ID:t till standardvรคrdet 1001.

Arv i objekttyp

Arvsegenskapen tillรฅter en underobjekttyp att komma รฅt alla attribut och medlemmar i superobjekttypen, eller รถverordnad objekttyp.

Underobjekttypen kallas รคrvd objekttyp och superobjekttypen kallas fรถrรคlderobjekttyp. Syntaxen nedan visar hur man skapar fรถrรคlder- och รคrvda objekttyper. Skรคrmdumpen nedan visar fรถrรคldertypens syntax (SUPER) markerad som INTE SLUTGILTIG.

CREATE TYPE-syntax fรถr en NOT FINAL fรถrรคlderobjekttyp som anvรคnds i arv

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar hur SUPER-typen skapas. NOT FINAL-klausulen gรถr att typen kan รคrvas.

Skรคrmdumpen nedan visar den รคrvda (SUB) typsyntaxen som skapats med nyckelordet UNDER.

CREATE TYPE UNDER-syntax fรถr en underobjekttyp som รคrver frรฅn en fรถrรคlderobjekttyp

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar hur SUB-typen skapas. Den innehรฅller alla medlemmar och attribut frรฅn den รถverordnade objekttypen.

Exempel 1: I exemplet nedan anvรคnder vi arvsegenskapen fรถr att infoga en post med hanterar-ID:t '1002' fรถr posten ('RRR', 1007, 20000). Vi kรถr programmet i fรถljande steg.

  • Steg 1: Skapa SUPER-typen.
  • Steg 2: Skapa SUB-typen och brรถdtexten.
  • Steg 3: Skapa ett anonymt block fรถr att anropa SUB-typen.

Steg 1) Skapa SUPER-typ eller fรถrรคldertyp.

Skรคrmdumpen nedan visar supertypen emp_object som skapas med NOT FINAL-klausulen.

Skapa supertypen emp_object NOT FINAL fรถr arvsexemplet

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 Fรถrklaring:

  • Code rad 1-9: Skapar objekttypen 'emp_object' med 4 attribut och 3 medlemmar. Den innehรฅller definitionen av en konstruktor med endast 3 parametrar. Den har deklarerats som 'NOT FINAL', sรฅ det รคr en fรถrรคldertyp.

Steg 2) Skapa SUB-typen under SUPER-typen.

Skรคrmdumpen nedan visar den รคrvda typen sub_emp_object och dess brรถdtext som skapas.

Skapa den รคrvda typen sub_emp_object och dess brรถdtext med 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 Fรถrklaring:

  • Code rad 10-13: Skapar 'sub_emp_object' som den รคrvda typen med ytterligare attributet 'default_manager' och en medlemsproceduredeklaration.
  • Code rad 14: Skapar brรถdtexten fรถr den รคrvda objekttypen.
  • Code rad 16-21: Definierar medlemsproceduren som infogar poster i tabellen 'emp' med vรคrdena frรฅn SUPER-objekttypen, fรถrutom vรคrdet manager. Fรถr vรคrdet manager anvรคnds 'default_manager' frรฅn SUB-typen.

Steg 3) Skapa anonymt block fรถr att anropa SUB-typen.

Skรคrmdumpen nedan visar det anonyma blocket som anropar SUB-typen och infogar standardhanterar-ID:t.

Anonymt block som anropar typen sub_emp_object fรถr att infoga ett standard-ID fรถr chefer

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 Fรถrklaring:

  • Code rad 25: Deklarerar 'guru_emp_det' som typen 'sub_emp_object'.
  • Code rad 27: Initierar objektet med den implicita konstruktorn. Konstruktorn har 5 parametrar (4 attribut frรฅn PARENT-typen och 1 attribut frรฅn SUB-typen). Den sista parametern (1002) definierar vรคrdet fรถr default_manager-attributet.
  • Code rad 28: Anropar medlemmen 'insert_default_mgr' fรถr att infoga posten med standardhanterar-ID:t som angetts i konstruktorn.

Likhet mellan PL/SQL-objekt

Objektinstanser som tillhรถr samma objekttyp kan jรคmfรถras fรถr att sรคkerstรคlla likhet. Fรถr att gรถra detta behรถver objekttypen en speciell metod som kallas ORDER-metoden.

Denna ORDER-metod ska vara en funktion som returnerar en numerisk typ. Den tar tvรฅ parametrar som indata (fรถrsta parametern: id:t fรถr self-object-instansen; andra parametern: id:t fรถr en annan objektinstans).

ID:n fรถr de tvรฅ objektinstanserna jรคmfรถrs och resultatet returneras som ett tal.

  • Ett positivt vรคrde indikerar att SELF-objektinstansen รคr stรถrre รคn den andra instansen.
  • Ett negativt vรคrde indikerar att SELF-objektinstansen รคr mindre รคn den andra instansen.
  • Noll indikerar att SELF-objektinstansen รคr lika med den andra instansen.
  • Om nรฅgon av instanserna รคr null returnerar funktionen null.

Skรคrmdumpen nedan visar syntaxen fรถr ORDER-medlemsfunktionen som mรฅste inkluderas i typtexten fรถr likhetskontrollen.

ORDER medlemsfunktionssyntax som anvรคnds fรถr att jรคmfรถra objektinstanser fรถr likhet

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

Syntaxfรถrklaring:

  • Syntaxen ovan visar ORDER-funktionen som mรฅste inkluderas i typtexten fรถr likhetskontrollen.
  • Parametern fรถr denna funktion bรถr vara en instans av samma objekttyp.
  • Funktionen kan anropas som "obj_instance_1.match(obj_instance_2)", och detta uttryck returnerar det visade numeriska vรคrdet, dรคr obj_instance_1 och obj_instance_2 รคr instanser av objekttypen.

Exempel 1: I fรถljande exempel jรคmfรถr vi tvรฅ objekt. Vi skapar tvรฅ instanser och jรคmfรถr attributet 'salary' mellan dem. Vi gรถr detta i tvรฅ steg.

  • Steg 1: Skapa objekttypen och brรถdtexten.
  • Steg 2: Skapa det anonyma blocket fรถr att jรคmfรถra objektinstanserna.

Steg 1) Skapa objekttypen och brรถdtexten.

Skรคrmbilderna nedan visar specifikationen emp_object_equality och dess brรถdtext, som definierar ORDER-funktionen som jรคmfรถr attributet salary.

Skapa objekttypspecifikationen emp_object_equality med en ORDER-funktion Definiera typen emp_object_equality som jรคmfรถr attributet 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 Fรถrklaring:

  • Code rad 1-4: Skapar objekttypen 'emp_object_equality' med 1 attribut och 1 medlem.
  • Code rad 6-16: Definierar ORDER-funktionen som jรคmfรถr attributet 'salary' fรถr SELF-instansen och parameterinstansen. Den returnerar ett negativt vรคrde om SELF-lรถnen รคr lรคgre, ett positivt vรคrde om SELF-lรถnen รคr hรถgre och 0 om lรถnerna รคr lika.

Code Produktion:

Typ skapad

Steg 2) Skapa det anonyma blocket fรถr att jรคmfรถra objektinstanserna.

Skรคrmdumpen nedan visar det anonyma blocket som jรคmfรถr tvรฅ emp_object_equality-instanser efter lรถn.

Anonymt block som jรคmfรถr tvรฅ emp_object_equality-instanser efter lรถn

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

Produktion

Salary of second instance is greater

Code Fรถrklaring:

  • Code rad 20: Deklarerar 'l_obj_1' av typen 'emp_object_equality'.
  • Code rad 21: Deklarerar 'l_obj_2' av typen 'emp_object_equality'.
  • Code rad 23: Initierar 'l_obj_1' med lรถnevรคrdet '15000'.
  • Code rad 24: Initierar 'l_obj_2' med lรถnevรคrdet '17000'.
  • Code rad 25-33: Skriver ut meddelandet baserat pรฅ numret som returneras av ORDER-funktionen.

Vanliga frรฅgor

En objekttyp modellerar en enda verklig enhet med attribut och metoder. samling โ€” en VARRAY, kapslad tabell eller associativ array โ€” innehรฅller mรฅnga element av en datatyp. Objekttyper beskriver struktur och beteende, medan samlingar lagrar flera vรคrden.

Bรฅda jรคmfรถr objektinstanser. En MAP-metod returnerar ett enda skalรคrt vรคrde som Oracle anvรคnder fรถr att sortera eller jรคmfรถra objekt, medan en ORDER-metod jรคmfรถr tvรฅ instanser direkt och returnerar ett negativt, noll eller positivt tal. En typ kan definiera det ena eller det andra, inte bรฅda.

Ja. Du kan skapa en objekttabell dรคr varje rad รคr en objektinstans, eller anvรคnda en objekttyp som datatyp fรถr en tabellkolumn. Detta gรถr det mรถjligt Oracle spara strukturerade objekt direkt i databasen snarare รคn bara i minnet.

En INTE-INSTANTIERBAR typ kan inte skapa objekt direkt; den fungerar som en abstracbas som andra typer utรถkar. Kombinerat med NOT FINAL definierar den en supertyp vars subtyper tillhandahรฅller den konkreta implementeringen av dess deklarerade metoder.

Anvรคnd ALTER TYPE fรถr att lรคgga till eller ta bort attribut och metoder, lรคgg till CASCADE fรถr att uppdatera beroende objekt och anvรคnd DROP TYPE fรถr att ta bort typen. En typ som fortfarande anvรคnds av tabeller eller andra typer kan inte tas bort fรถrrรคn dessa beroenden har hanterats fรถrst.

Frรฅga datalexikonvyerna USER_TYPES och ALL_TYPES efter typnamn, och USER_TYPE_ATTRS och USER_TYPE_METHODS efter deras attribut och metoder. Med dessa vyer kan du granska en befintlig objektmodell utan att lรคsa kรคllkoden.

Ja. GitHub Copilot utkast CREATE TYPE-specifikationer, TYPE BODY-metoder, konstruktorer och ORDER-funktioner frรฅn en kommentar. RevVisa attributdatatyperna, konstruktorparametrarna och arvsklausulerna innan du distribuerar den genererade typen.

AI-assistenter analyserar dina tabeller och fรถreslรฅr objekttyper och attributmappningpings och arvshierarkier. Denna granskning av maskininlรคrning flaggar redundanta attribut, saknade konstruktorer och alltfรถr djupt arv innan objektmodellen nรฅr produktion, vilket fรถrbรคttrar underhรฅllsvรคnligheten.

Sammanfatta detta inlรคgg med: