Oracle Typy objektů PL/SQL: CREATE TYPE s příklady

⚡ Chytré shrnutí

Objektové typy v PL/SQL přinášejí objektově orientované programování do Oracle, což vám umožňuje modelovat entity reálného světa pomocí atributů a metod. Podporují konstruktory, dědičnost a porovnávání rovnosti, takže jeden typ na úrovni schématu může ukládat a zpracovávat strukturovaná data.

  • 🧱 Komponenty typu objektu: Objektový typ kombinuje atributy, které ukládají data, a členy neboli metody, které definují logiku jeho zpracování.
  • 🏗️ Vytvořit objekt: Typy objektů se vytvářejí na úrovni schématu pomocí CREATE TYPE a jejich metody jsou definovány v samostatném těle CREATE TYPE.
  • 🔧 Konstruktéři: Každý objektový typ má implicitní konstruktor pojmenovaný po tomto typu a můžete definovat explicitní konstruktor pro nastavení výchozích hodnot.
  • 🧬 Dědictví: Nadřazený typ NOT FINAL je rozšířen o UNDER, takže podtyp dědí všechny atributy a členy nadřazeného typu.
  • 🇧🇷 Rovnost: Členská funkce ORDER porovnává dvě instance objektu a vrací záporné, nulové nebo kladné číslo.
  • 🤖 Asistence AI: Asistenti umělé inteligence, jako je GitHub Copilot, navrhují definice, konstruktory a metody ORDER CREATE TYPE z komentáře.

Oracle Typy objektů PL/SQL zobrazující CREATE TYPE s atributy a metodami

Co je typ objektu v PL/SQL?

Objektově orientované programování je obzvláště vhodné pro vytváření opakovaně použitelných komponent a složitých aplikací. Programy jsou organizovány kolem „objektů“ spíše než „akcí“; to znamená, že jsou navrženy tak, aby pracovaly a interagovaly s celým objektem, nikoli s jednou akcí. Tento přístup umožňuje programátorovi naplňovat a manipulovat s detaily na úrovni objekt-entita.

Obrázek níže znázorňuje příklad typu objektu, ve kterém je bankovní účet považován za objektovou entitu. Atributy objektu obsahují hodnoty – v případě bankovního účtu se jedná o číslo účtu, zůstatek na bankovním účtu atd. – zatímco metody objektu popisují akce, jako je výpočet úrokové sazby nebo generování bankovního výpisu, přičemž každá z nich vyžaduje dokončení určitého procesu.

Bankovní účet modelovaný jako objektový typ s atributy a metodami v PL/SQL

In PL / SQLObjektově orientované programování je založeno na objektových typech. Objektový typ může reprezentovat jakoukoli entitu reálného světa. Následující části se zabývají objektovými typy, jejich komponentami a tím, jak je vytvářet a používat.

Komponenty typů objektů

Objektový typ PL/SQL obsahuje hlavně dvě komponenty.

  1. Atributy
  2. Členové/Metody

Atributy

Atributy jsou sloupce nebo pole, ve kterých jsou uložena data. Každý atribut je namapován na datový typ, který definuje typ zpracování a uložení pro daný atribut. Atribut může být libovolný platný. datový typ PL/SQL, nebo může být jiného typu objektu.

Členové/Metody

Členové nebo metody jsou podprogramy definované uvnitř objektového typu. Nepoužívají se k ukládání dat; místo toho definují zpracování prováděné uvnitř objektového typu – například ověřování dat před naplněním objektu. Jsou deklarovány ve specifikaci objektového typu a definovány v těle objektového typu. Tělo je volitelné: pokud nejsou přítomni žádní členové, objektový typ nemá žádnou část těla.

Vytvořit objekt v Oracle

Objektový typ nelze vytvořit na úrovni podprogramu; lze jej vytvořit pouze na úrovni schématu. Jakmile je objektový typ definován ve schématu, lze jej použít v podprogramech. Objektový typ se vytváří pomocí příkazu „CREATE TYPE“ a tělo typu lze vytvořit až poté, co jeho objektový typ existuje.

Níže uvedené snímky obrazovky ukazují syntaxi CREATE TYPE pro specifikaci objektu a syntaxi CREATE TYPE BODY, která definuje jeho metody.

Syntaxe CREATE TYPE definující specifikaci objektu s atributy v Oracle Syntaxe CREATE TYPE BODY definující metody objektového typu PL/SQL

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje vytvoření OBJEKTU s atributy a TĚLA OBJEKTU s metodami.
  • Metody mohou být také přetíženy v těle objektu.

Deklarace Inicializace typu objektu

Stejně jako ostatní komponenty v PL/SQL musí být objektové typy deklarovány před jejich použitím v programu. Jakmile je objektový typ vytvořen, lze jej použít v deklarativní sekci podprogramu k deklaraci proměnné daného objektového typu.

Kdykoli je proměnná deklarována jako objektový typ, za běhu se vytvoří nová instance daného objektového typu a na tuto nově vytvořenou instanci se odkazuje názvem proměnné. Tímto způsobem může jeden objektový typ ukládat více hodnot pod různými instancemi.

Níže uvedený snímek obrazovky ukazuje deklaraci proměnné jako objektového typu uvnitř PL/SQL blok.

Deklarace proměnné objektového typu v deklarativní sekci bloku PL/SQL

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje deklaraci proměnlivý jako objektový typ v deklarativní části.

Jakmile je proměnná deklarována jako objektový typ v podprogramu, je atomicky null – celý objekt samotný je null. Před použitím v programu musí být inicializována hodnotami. Objekty se inicializují pomocí konstruktorů.

Konstruktory jsou implicitní metody objektu, na které se lze odkazovat se stejným názvem jako má objektový typ. Následující snímek obrazovky ukazuje inicializaci instance objektového typu.

Inicializace instance objektového typu na hodnotu null pomocí jejího konstruktoru

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje inicializaci instance objektu s hodnotou null.
  • Samotný objekt již není po inicializaci null, ale atributy uvnitř objektu zůstávají null, dokud jim nejsou přiřazeny hodnoty.

Konstruktory

Konstruktory jsou implicitní metody objektu, na které se lze odkázat se stejným názvem jako typ objektu. Kdykoli je na objekt odkazováno poprvé, je tento konstruktor implicitně volán.

Objekty můžete také inicializovat pomocí těchto konstruktorů. Konstruktor lze definovat explicitně definováním člena v těle objektu typu se stejným názvem jako objektový typ.

Příklad 1: V následujícím příkladu používáme člen typu objektu k vložení záznamů do tabulky emp s hodnotami ('RRR', 1005, 20000, 1000) a ('PPP', 1006, 20000, 1001). Po vložení dat je zobrazíme pomocí člena typu objektu. Také používáme explicitní konstruktor k naplnění ID manažera výchozí hodnotou 1001 pro druhý záznam.

Provedeme to v následujících krocích.

  • Krok 1: Vytvořte typ objektu a tělo typu objektu.
  • Krok 2: Vytvořte anonymní blok pro volání typu objektu pomocí implicitního konstruktoru pro emp_no 1005.
  • Krok 3: Vytvořte anonymní blok pro volání typu objektu pomocí explicitního konstruktoru pro emp_no 1006.

Krok 1) Vytvořte typ objektu a tělo typu objektu.

Níže uvedený snímek obrazovky ukazuje vytváření specifikace typu objektu emp_object s jejími atributy a členy.

Vytvoření specifikace objektu typu emp_object s atributy a členy

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

Níže uvedený snímek obrazovky ukazuje tělo typu emp_object, které je vytvářeno pomocí explicitního konstruktoru a členských procedur.

Definování těla typu emp_object s explicitním konstruktorem a členskými procedurami

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 Vysvětlení

  • Code řádek 1–9: Vytvoření objektu typu 'emp_object' se 4 atributy a 3 členy. Obsahuje definici konstruktoru pouze s 3 parametry. (Skutečný implicitní konstruktor obsahuje počet parametrů rovný počtu atributů přítomných v objektu typu.)
  • Code řádek 10: Vytvoření těla typu.
  • Code řádek 11–21: Definování explicitního konstruktoru. Přiřazení hodnot parametrů atributům a přiřazení atributu 'manager' výchozí hodnoty '1001'.
  • Code řádek 22–26: Definování člena 'insert_records', ve kterém se hodnoty atributů vkládají do tabulky 'emp'.
  • Code řádek 27–34: Definování člena 'display_records', který zobrazuje hodnoty atributů typu objektu.

Výstup:

Typ vytvořen

Tělo typu bylo vytvořeno

Krok 2) Vytvoření anonymního bloku pro volání vytvořeného typu objektu pomocí implicitního konstruktoru pro emp_no 1005.

Níže uvedený snímek obrazovky ukazuje anonymní blok, který volá emp_object prostřednictvím implicitního konstruktoru.

Anonymní blok volá emp_object pomocí implicitního konstruktoru pro 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 Vysvětlení

  • Code řádek 37–45: Vkládání záznamů pomocí implicitního konstruktoru. Volání konstruktoru obsahuje skutečný počet hodnot atributů.
  • Code řádek 38: Deklaruje 'guru_emp_det' jako typ objektu 'emp_object'.
  • Code řádek 41: Příkaz 'guru_emp_det.display_records' volá člen 'display_records' a zobrazí se hodnoty atributů.
  • Code řádek 42: Příkaz 'guru_emp_det.insert_records' volá člen 'insert_records' a hodnoty atributů jsou vloženy do tabulky. Blok poté potvrdí (commit). transakce.

Výstup:

Jméno zaměstnance: RRR

Číslo zaměstnance: 1005

Plat: 20000 XNUMX

Manažer: 1000

Krok 3) Vytvoření anonymního bloku pro volání vytvořeného typu objektu pomocí explicitního konstruktoru pro emp_no 1006.

Níže uvedený snímek obrazovky ukazuje anonymní blok, který volá emp_object pomocí explicitního konstruktoru se třemi argumenty.

Anonymní blok volá emp_object pomocí explicitního konstruktoru pro 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;
/

Výstup

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

Code Vysvětlení:

  • Code řádek 46–53: Vložení záznamu pomocí explicitního konstruktoru.
  • Code řádek 46: Deklaruje 'guru_emp_det' jako typ objektu 'emp_object'.
  • Code řádek 50: Příkaz 'guru_emp_det.display_records' volá člen 'display_records' a zobrazí se hodnoty atributů.
  • Code řádek 51: Příkaz 'guru_emp_det.insert_records' volá člen 'insert_records' a hodnoty atributů jsou vloženy do tabulky. Protože se předávají pouze tři argumenty, explicitní konstruktor nastaví ID správce na jeho výchozí hodnotu 1001.

Dědičnost v typu objektu

Vlastnost dědičnosti umožňuje podobjektovému typu přístup ke všem atributům a členům nadřazeného typu objektu nebo nadřazeného typu objektu.

Podobjektový typ se nazývá zděděný typ objektu a nadřazený typ objektu se nazývá nadřazený typ objektu. Níže uvedená syntaxe ukazuje, jak vytvořit nadřazené a zděděné typy objektů. Níže uvedený snímek obrazovky ukazuje syntaxi nadřazeného typu (SUPER) označenou jako NOT FINAL.

Syntaxe CREATE TYPE pro nadřazený objekt typu NOT FINAL použitý v dědičnosti

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje vytvoření typu SUPER. Klauzule NOT FINAL umožňuje dědění typu.

Níže uvedený snímek obrazovky ukazuje zděděnou syntaxi typu (SUB) vytvořenou pomocí klíčového slova UNDER.

Syntaxe CREATE TYPE UNDER pro typ podobjektu, který dědí od nadřazeného objektu

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje vytvoření typu SUB. Obsahuje všechny členy a atributy z nadřazeného objektu typu.

Příklad 1: V níže uvedeném příkladu používáme vlastnost dědičnosti k vložení záznamu s ID manažera '1002' pro daný záznam ('RRR', 1007, 20000). Program spouštíme v následujících krocích.

  • Krok 1: Vytvořte typ SUPER.
  • Krok 2: Vytvořte typ a tělo SUB.
  • Krok 3: Vytvořte anonymní blok pro volání typu SUB.

Krok 1) Vytvořte typ SUPER nebo nadřazený typ.

Níže uvedený snímek obrazovky ukazuje vytvoření supertypu emp_object pomocí klauzule NOT FINAL.

Vytvoření supertypu emp_object NOT FINAL pro příklad dědičnosti

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 Vysvětlení:

  • Code řádek 1–9: Vytvoření objektu typu 'emp_object' se 4 atributy a 3 členy. Obsahuje definici konstruktoru pouze s 3 parametry. Byl deklarován jako 'NOT FINAL', takže se jedná o nadřazený typ.

Krok 2) Vytvořte typ SUB pod typem SUPER.

Níže uvedený snímek obrazovky ukazuje zděděný typ sub_emp_object a jeho vytvářené tělo.

Vytvoření zděděného typu sub_emp_object a jeho těla pomocí 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 Vysvětlení:

  • Code řádek 10–13: Vytvoření 'sub_emp_object' jako zděděného typu s jedním dalším atributem 'default_manager' a deklarací členské procedury.
  • Code řádek 14: Vytvoření těla pro zděděný typ objektu.
  • Code řádek 16–21: Definování členské procedury, která vkládá záznamy do tabulky 'emp' s hodnotami z objektu typu SUPER, s výjimkou hodnoty manager. Pro hodnotu manager se používá 'default_manager' z typu SUB.

Krok 3) Vytvoření anonymního bloku pro volání typu SUB.

Níže uvedený snímek obrazovky ukazuje anonymní blok, který volá typ SUB a vkládá výchozí ID správce.

Anonymní blok volající typ sub_emp_object pro vložení výchozího ID správce

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 Vysvětlení:

  • Code řádek 25: Deklarace 'guru_emp_det' jako typu 'sub_emp_object'.
  • Code řádek 27: Inicializace objektu implicitním konstruktorem. Konstruktor má 5 parametrů (4 atributy typu PARENT a 1 atribut typu SUB). Poslední parametr (1002) definuje hodnotu atributu default_manager.
  • Code řádek 28: Volání člena 'insert_default_mgr' pro vložení záznamu s výchozím ID správce předaným v konstruktoru.

Rovnost PL/SQL objektů

Instance objektů, které patří ke stejnému typu objektu, lze porovnávat z hlediska rovnosti. K tomu je pro daný typ objektu potřeba speciální metoda zvaná metoda ORDER.

Tato metoda ORDER by měla být funkce, která vrací číselný typ. Jako vstup přijímá dva parametry (první parametr: ID instance vlastního objektu; druhý parametr: ID jiné instance objektu).

ID obou instancí objektu jsou porovnána a výsledek je vrácen jako číslo.

  • Kladná hodnota značí, že instance objektu SELF je větší než druhá instance.
  • Záporná hodnota znamená, že instance objektu SELF je menší než druhá instance.
  • Nula značí, že instance objektu SELF je rovna druhé instanci.
  • Pokud je některá z instancí null, funkce vrátí hodnotu null.

Níže uvedený snímek obrazovky ukazuje syntaxi členské funkce ORDER, která musí být zahrnuta v těle typu pro kontrolu rovnosti.

Syntaxe členské funkce ORDER používaná k porovnání instancí objektů z hlediska rovnosti

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

Vysvětlení syntaxe:

  • Výše uvedená syntaxe ukazuje funkci ORDER, která musí být zahrnuta v těle typu pro kontrolu rovnosti.
  • Parametr pro tuto funkci by měl být instancí stejného typu objektu.
  • Funkci lze volat jako „obj_instance_1.match(obj_instance_2)“ a tento výraz vrací zobrazenou číselnou hodnotu, kde obj_instance_1 a obj_instance_2 jsou instance daného typu objektu.

Příklad 1: V následujícím příkladu porovnáme dva objekty. Vytvoříme dvě instance a porovnáme mezi nimi atribut 'plat'. Provedeme to ve dvou krocích.

  • Krok 1: Vytvořte typ a tělo objektu.
  • Krok 2: Vytvořte anonymní blok pro porovnání instancí objektů.

Krok 1) Vytvoření typu a těla objektu.

Níže uvedené snímky obrazovky ukazují specifikaci emp_object_equality a její tělo, které definuje funkci ORDER porovnávající atribut salary.

Vytvoření specifikace objektu typu emp_object_equality pomocí funkce ORDER Definování těla typu emp_object_equality, které porovnává 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 Vysvětlení:

  • Code řádek 1–4: Vytvoření objektu typu 'emp_object_equality' s 1 atributem a 1 členem.
  • Code řádek 6–16: Definování funkce ORDER, která porovnává atribut 'plat' instance SELF a instance parametru. Vrací zápornou hodnotu, pokud je plat SELF nižší, kladnou hodnotu, pokud je plat SELF vyšší, a 0, pokud jsou platy stejné.

Code Výstup:

Typ vytvořen

Krok 2) Vytvoření anonymního bloku pro porovnání instancí objektů.

Níže uvedený snímek obrazovky ukazuje anonymní blok, který porovnává dvě instance emp_object_equality podle platu.

Anonymní blok porovnávající dvě instance emp_object_equality podle platu

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ýstup

Salary of second instance is greater

Code Vysvětlení:

  • Code řádek 20: Deklarace 'l_obj_1' typu 'emp_object_equality'.
  • Code řádek 21: Deklarace 'l_obj_2' typu 'emp_object_equality'.
  • Code řádek 23: Inicializace 'l_obj_1' s hodnotou platu '15000'.
  • Code řádek 24: Inicializace 'l_obj_2' s hodnotou platu '17000'.
  • Code řádek 25–33: Výpis zprávy na základě čísla vráceného funkcí ORDER.

Nejčastější dotazy

Objektový typ modeluje jednu entitu reálného světa s atributy a metodami. sbírka — VARRAY, vnořená tabulka nebo asociativní pole — obsahuje mnoho prvků jednoho datového typu. Objektové typy popisují strukturu a chování, zatímco kolekce ukládají více hodnot.

Obě porovnávají instance objektů. Metoda MAP vrací jednu skalární hodnotu, která Oracle používá se k řazení nebo porovnávání objektů, zatímco metoda ORDER porovnává dvě instance přímo a vrací záporné, nulové nebo kladné číslo. Typ může definovat jeden nebo druhý typ, nikoli oba.

Ano. Můžete vytvořit tabulku objektů, kde každý řádek je instancí objektu, nebo použít typ objektu jako datový typ sloupce tabulky. To umožňuje Oracle uchovávat strukturované objekty přímo v databázi, nikoli pouze v paměti.

Typ NOT INSTANTIABLE nemůže přímo vytvářet objekty; funguje jako abs.traczáklad, který rozšiřují další typy. V kombinaci s NOT FINAL definuje nadtyp, jehož podtypy poskytují konkrétní implementaci deklarovaných metod.

Pro přidání nebo odstranění atributů a metod použijte příkaz ALTER TYPE, pro aktualizaci závislých objektů přidejte příkaz CASCADE a pro odstranění typu použijte příkaz DROP TYPE. Typ, který stále používají tabulky nebo jiné typy, nelze odstranit, dokud nejsou tyto závislé objekty nejprve zpracovány.

Dotazujte se na názvy typů v pohledech datového slovníku USER_TYPES a ALL_TYPES a na atributy a metody v pohledech USER_TYPE_ATTRS a USER_TYPE_METHODS. Tyto pohledy umožňují auditovat existující objektový model bez nutnosti čtení zdrojového kódu.

Ano. GitHub Copilot vytváří specifikace CREATE TYPE, metody TYPE BODY, konstruktory a funkce ORDER z komentáře. RevPřed nasazením vygenerovaného typu si prohlédněte datové typy atributů, parametry konstruktoru a klauzule dědičnosti.

Asistenti s umělou inteligencí analyzují vaše tabulky a navrhují typy objektů a mapu atributů.pinga hierarchie dědičnosti. Tato recenze strojového učení označuje redundantní atributy, chybějící konstruktory a příliš hlubokou dědičnost ještě předtím, než objektový model dosáhne produkčního prostředí, čímž se zlepšuje udržovatelnost.

Shrňte tento příspěvek takto: